Cloud-authenticated site resource management devices, apparatuses, methods and systems

ABSTRACT

The CLOUD-AUTHENTICATED SITE RESOURCE MANAGEMENT DEVICES, APPARATUSES, METHODS AND SYSTEMS (“CASRM”) transforms resource-use, weather, and user settings inputs into resource management schedule and control outputs. The CASRM achieves data transformation via using a building automation management device, comprising at least a processor a memory storing processor-executable instructions to receive, at a virtual cloud network controller, a data packet from a source building resource control device and to access a virtual routing table corresponding to a local virtual network associated with a control entity. The building automation management device may also determine a destination building resource control device based on the virtual routing table and at least one destination address in the data packet, and may send the data packet to the destination building resource control device.

PRIORITY CLAIM

Applicant is a national stage of PCT Application Serial No.PCT/US2014/058480, filed Sep. 30, 2014 and entitled,“CLOUD-AUTHENTICATED SITE RESOURCE MANAGEMENT APPARATUSES, METHODS ANDSYSTEMS,” which in turn claims priority to and the benefit of: (1) U.S.provisional patent application Ser. No. 61/884,995, filed Sep. 30, 2013,and entitled, “CLOUD-AUTHENTICATED SITE RESOURCE MANAGEMENT APPARATUSES,METHODS AND SYSTEMS”; and (2) U.S. provisional patent application Ser.No. 61/949,865, filed Mar. 7, 2014, and entitled “CLOUD-AUTHENTICATEDSITE RESOURCE MANAGEMENT APPARATUSES, METHODS AND SYSTEMS.” The entirecontents of the aforementioned applications are herein expresslyincorporated by reference.

This application for letters patent disclosure document describesinventive aspects that include various novel innovations (hereinafter“disclosure”) and contains material that is subject to copyright, maskwork, and/or other intellectual property protection. The respectiveowners of such intellectual property have no objection to the facsimilereproduction of the disclosure by anyone as it appears in publishedPatent Office file/records, but otherwise reserve all rights.

FIELD

The present innovations generally address resource management viacloud-authenticated devices, and more particularly, includeCLOUD-AUTHENTICATED SITE RESOURCE MANAGEMENT DEVICES, APPARATUSES,METHODS AND SYSTEMS.

However, in order to develop a reader's understanding of theinnovations, disclosures have been compiled into a single description toillustrate and clarify how aspects of these innovations operateindependently, interoperate as between individual innovations, and/orcooperate collectively. The application goes on to further describe theinterrelations and synergies as between the various innovations; all ofwhich is to further compliance with 35 U.S.C. §112.

BACKGROUND

Users may wish to control a plurality of resources within a site orbuilding. A user may use an electronic device to monitor resource use.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying appendices and/or drawings illustrate variousnon-limiting, example, innovative aspects in accordance with the presentdescriptions:

FIGS. 1A-C show block diagrams illustrating example embodiments of theCLOUD-AUTHENTICATED SITE RESOURCE MANAGEMENT DEVICES, APPARATUSES,METHODS AND SYSTEMS (hereinafter “CASRM”);

FIGS. 1D-E show data flow diagrams illustrating interaction with theCASRM cloud in some embodiments of the CASRM;

FIGS. 2A-B show block diagrams illustrating relationships between users,controllers, and the cloud in some embodiments of the CASRM;

FIG. 3 shows a data flow diagram illustrating initiating a newcontroller in some embodiments of the CASRM;

FIG. 4 shows a logic flow diagram illustrating initiating a newcontroller in some embodiments of the CASRM;

FIG. 5 shows a data flow diagram illustrating updating controllersettings in some embodiments of the CASRM;

FIG. 6 shows a logic flow diagram illustrating updating controllersettings in some embodiments of the CASRM;

FIG. 7 shows a block diagram illustrating control codes in someembodiments of the CASRM;

FIG. 8 shows a data flow diagram illustrating utilizing control codes insome embodiments of the CASRM;

FIG. 9 shows a logic flow diagram illustrating utilizing control codesin some embodiments of the CASRM;

FIGS. 10A-J show diagrams illustrating controller relationships in someembodiments of the CASRM;

FIG. 11 shows a screenshot diagram illustrating controller management insome embodiments of the CASRM;

FIGS. 12A-B show screenshot diagrams illustrating controllerconfigurations in some embodiments of the CASRM;

FIG. 13 shows a screenshot diagram illustrating adding devices in someembodiments of the CASRM;

FIG. 14 shows a screenshot diagram illustrating editing device settingsin some embodiments of the CASRM;

FIG. 15 shows a screenshot diagram illustrating managing devices in someembodiments of the CASRM;

FIG. 16 shows a screenshot diagram illustrating managing devicepermissions in some embodiments of the CASRM;

FIG. 17 shows a screenshot diagram illustrating monitoring devices on amap in some embodiments of the CASRM;

FIG. 18 shows a screenshot diagram illustrating device setup settingsfor controllers in some embodiments of the CASRM;

FIGS. 19A-B show screenshot diagrams illustrating Zigbee networksettings in some embodiments of the CASRM;

FIGS. 20A-B show screenshot diagrams illustrating BACnet networksettings in some embodiments of the CASRM;

FIG. 21 show screenshot diagrams illustrating a network architecture fora CASRM controller network, in some embodiments of the CASRM;

FIG. 22 shows a logic flow diagram illustrating a new subscribersign-up, in some embodiments of the CASRM;

FIG. 23 shows a logic flow diagram illustrating logging into asubscriber account, in some embodiments of the CASRM;

FIG. 24 shows a logic flow diagram illustrating logging into asubscriber account, in some embodiments of the CASRM;

FIG. 25 shows a logic flow diagram illustrating adding a license to anaccount, in some embodiments of the CASRM;

FIG. 26 shows a logic flow diagram illustrating upgrading a license foran account, in some embodiments of the CASRM;

FIG. 27 shows a logic flow diagram illustrating changing a password foran account, in some embodiments of the CASRM;

FIG. 28 shows a logic flow diagram illustrating manually renewing anaccount, in some embodiments of the CASRM;

FIG. 29 illustrates a diagram of an object hierarchy in a CASRMcontroller, in some embodiments of the CASRM; and

FIG. 30 shows a block diagram illustrating embodiments of a CASRMcontroller; and

The leading number of each reference number within the drawingsindicates the figure in which that reference number is introduced and/ordetailed. As such, a detailed discussion of reference number 101 wouldbe found and/or introduced in FIG. 1. Reference number 201 is introducedin FIG. 2, etc.

DETAILED DESCRIPTION

FIG. 1A shows a block diagram illustrating example embodiments of theCASRM. In some implementations, a user 102 may wish to control resourceswithin a home, building, and/or a similar site. In some implementations,a user may be a person living in a home, a landlord, superintendent,and/or a like entity, a resource company (e.g., an electric company),and/or the like. In some implementations, a user may wish to monitorelectric, gas, water, oil, and/or like resources, and/or may wish tocontrol electronic home and/or like appliances (including but notlimited to kitchen appliances, lights, heating and air conditioningunits, washing and drying machines, electronic showers and/or baths,electronic window shades and/or blinds, fans, bathroom resources,computer resources, and/or the like). The user may choose to controlthese resources and/or appliances via a building resource controldevice, such as main controller 104.

In some implementations, the main controller may be any electronicdevice that is capable of interacting with the various resources and/orappliances; in other implementations, the main controller may be adevice particularly designed for detecting and/or monitoring aparticular resource, appliance, and/or the like. The main controller mayhave wired or wireless functionality with a network controller. The maincontroller may include customizable user interfaces (e.g., the user maybe able to choose screen colors, and/or a display language) as well ascustomizable hardware (e.g., customizable casings and facia convers).The main controller may provide data such as the current date and/ortime, resource usage, indoor and/or outdoor temperatures, humidity,weather data, custom utility logos, and/or like information.

Main controllers may be configured for residential buildings, commercialbuildings, hospitality locales (e.g., hotels and/or the like), and/orother such locations. In some implementations, commercial and/orhospitality buildings may be able to alter which settings and/orresources a user may be able to access and/or alter (e.g., in someimplementations an employee can be prevented from affecting thetemperature of an office floor, and/or a guest at a hotel may only havethe ability to turn heat on or off, and/or the like). The user can set atarget resource usage for an area in a building (e.g., can set a targettemperature and/or the like), and the main controller may provideinstructions to resource devices, appliances and/or other resourcecontrollers in order to meet the target usage specified by the user.

In some implementations, this main controller may be used to updatesettings, restrictions, and/or the like, or issue controls,instructions, and/or the like, to resources and/or appliances. In otherimplementations, other devices (e.g. unit controllers) that may controlresources and/or appliances 106 may receive instructions, controls,settings, and/or restrictions from the main controller. In someimplementations, the main and unit controllers may connect via a fieldbus (e.g., BACnet, LON, modbus, Zigbee, KNX, and/or the like). In otherimplementations (referring to FIGS. 1B and 1C), the main and unitcontrollers may connect via a building automation management device(e.g., a cloud network controller, such as a device instantiating CASRMcloud 112 a and/or 112 b), which may facilitate a network connectionbetween various controllers 122 a-c, and/or the like in the networkwithout physical network infrastructure at the controllers' sites. Forexample, in some implementations, rather than using a physical device(e.g., a BACnet IP switch, router, and/or the like) which communicateswith the controllers via UDP, TCP, and/or a like protocol, and relaysthis information to other controllers, sites, a central processinglocation, and/or the like, the controllers may connect directly to theCASRM cloud, which may package the data and forward it to theappropriate recipients (e.g. an internet router 120 a and/or 120 b) in aformat similar to that which would be sent from the physical device(e.g., via CASRM Virtual BACnet Router 116 a and/or 116 b and CASRMVirtual Network Proxy 118 a and/or 118 b). In some implementations,traditional physical layers define data links and physical layers andprotocols for communication between layers, said protocols includingopen, unencrypted ARCNET, Ethernet, BACnet/IP, KNX-related protocols,Point-To-Point over RS-232, Master-Slave/Token-Passing over RS-485,LonTalk, and/or like protocols.

In some implementations, the CASRM cloud may allow for virtualizing saidlayers and/or communication between layers, and may allow forvirtualizing a plurality of physical layer configurations supporting aplurality of layer protocols. For example, the CASRM cloud may supportvirtualization of a BACnet physical network, and a LON physical network,and may allow for communications between the two networks. This mayallow networks which traditionally would require modification of aprotocol and/or format in order to communicate, to send and receive datafrom other networks regardless of the nature of the underlying networkon which the virtualized network is based. Virtualization may also allowthe CASRM cloud to provide secure web sockets for the purpose ofgenerating fully-secure tunnels that may enable full duplex (e.g.,duplex BACnet) communications, and/or the like. In some implementations,the CASRM cloud may also be able to facilitate the virtualization of alocal network of physical devices (e.g., a user-specified local networkof unit controllers 124 a-124 c, and/or the like). In someimplementations, the virtual network architecture implemented by theCASRM cloud may also be able to provide security to communicationsbetween controllers and/or control devices that may not be able to behandled by a traditional BACnet and/or the like infrastructure (e.g.,may be able to provide a way of granting varying user access privileges,providing a secure form of communication between controllers viaproviding an extra layer of security with regards to communicationsbetween devices, and/or the like).

The CASRM cloud may facilitate more secure data storage solutions viaits Virtual Private Cloud (VPC) 114 a and/or 114 b. In someimplementations, the VPC may be used to control and/or manage networkconfigurations, e.g., may manage routing tables, NATting and/or NATGateways, network Access Control Lists (ACL), subnets, security groups,and/or like security. In some implementations the VPC may also beconfigured to back up data and/or to serve as a permanent datarepository for the CASRM cloud, and/or the like. In someimplementations, the CASRM may implement a plurality of VPCs in order tofacilitate these and other features for various users within the CASRMcloud.

As a non-limiting example, referring to FIG. 1D, in someimplementations, a user 102 may set up a new main controller device 126,e.g., via providing user information (e.g., name, address,correspondence address, and/or the like), authentication credentials(e.g., user name, user password, user activation code if applicable,and/or the like), and/or like information to a main controller 128, toan application interface linked to the CASRM cloud, and/or the like. Themain controller may attempt to register on the cloud 130 using theuser-provided input, its controller information (e.g., controller ID,controller type, controller location, and/or the like), and/or any otherinformation the cloud may need to facilitate authentication andregistration of the main controller into the network, and/or the like.In some implementations the controller may send a registration request134 to the CASRM cloud 136 in order to be registered to the network. Insome implementations, registration request 134 may take a form similarto the following:

POST /registration_message.php HTTP/1.1 Host: www.CASRMproccess.comContent-Type: Application/XML Content-Length: 788 <?XML version = “1.0”encoding = “UTF-8”?> <registration_message> <timestamp>2016-01-0112:30:00<timestamp>  <user_params>  <user_username>example_name<user_username>  <user_password>********</user_password>   <user_address>123 MainStreet, Anytown, Anytown 12345   <user_address>  </user_params> <controller_params>   <controller_ID>12345678<controller_ID>  <controller_GPS>-73, 140</controller_GPS>  <controller_type>main</controller_type>  <controller_action>add</controller_action>  </controller_params><registration_message>

The CASRM cloud may be able to authenticate the user-providedcredentials 138, and may generate a new local virtual network for theuser for the new main controller 140. The new local virtual network maybe stored as a new record for a virtual network in the CASRM database,and the record may be linked to and/or otherwise associated with that ofthe user account record. In some implementations the user may specifythat the main controller be added to an existing local virtual networkinstead. In some implementations the CASRM cloud may generate and/ormodify rules for the virtual network (e.g., may specify how nodes withinthe virtual network interact with each other, with other nodes in othervirtual networks, with the CASRM cloud, and/or like entities). The CASRMcloud may also create a new local virtual network edge node for the maincontroller to 142 to add to the local virtual network. In someimplementation the node may contain information corresponding to themain controller (e.g., controller data and/or the like), and may also belinked to the user (e.g., may also contain user-provided information,and/or the like), and may be assigned a virtual IP and/or like networkaddress which is mapped onto the physical main controller device, and/orthe like. The node may also be configured to have particularrelationships with other nodes already in the network, if applicable(e.g., may be designated as a node through which other nodes within thenetwork must interface with in order to communicate with the CASRMcloud, or a node which only communicates with certain other nodes withinthe network, and/or the like). The CASRM cloud may store routing tablesand/or the like corresponding to the virtual network, and/or the like.In some implementations the CASRM cloud may then instantiate the virtualnetwork node within the virtual network 144 (e.g., may modify thevirtual network record to include the node and to include itsconnections to other nodes within the network, and/or the like), and maysend a registration response 146 to the main controller, user, and/orthe like, which may provide a confirmation that the controller has beenadded to the virtual network, and/or the like.

In some implementations, if the user wishes to set up a new controller148 (e.g., a unit controller 150, and/or the like), the user may againprovide authentication credentials, user information, and/or the like tothe unit controller, to a CASRM application interface, and/or the like,which may send a new registration request 152 to the CASRM cloud. Insome implementations, a registration request 152 may take a form similarto registration request 134, and may comprise information about theuser, the controller, and/or the like. In some implementations, theCASRM cloud may use the information to create a local virtual networknode 154 (e.g., a non-edge node, and/or the like) corresponding to thenew unit controller, and based on the data provided to the cloud. TheCASRM cloud may also be able to assign a virtual IP and/or like networkaddress to the unit controller, and may instantiate the new node withinthe virtual network 156. The cloud may then generate and send aregistration response 158 to the user, unit controller, and/or the likeindicating that the controller was added to the virtual network, and/orthe like.

Referring to FIG. 1E, in some implementations, when the controllerand/or application interface sends registration request 134 to the CASRMcloud, the request may be authenticated 138 by the CASRM Virtual NetworkProxy 118 b, and/or the like. The cloud may query the CASRM VirtualPrivate Cloud 114 b via a virtual network information request 158, inorder to obtain information about the virtual network's topology and/orthe like 160 for the virtual network the controller is being registeredto. In some implementations if a new virtual network is being generated,the Virtual Private Cloud may not be queried for a virtual networktopology, and/or may provide a blank virtual network topology, and/orthe like. The private cloud may provide the virtual network topology viaa virtual network information response 162, which may be used by theCASRM Virtual BACnet router 116 b and/or the like in order to map avirtual local IP and/or like network address to the controller based onthe user's local virtual network information 164, and/or the like. Insome implementations, the private cloud may then be used to back upand/or store a copy of the new virtual network topology via sending thenew topology to the cloud in a current virtual network message 166. Thevirtual private cloud may save the backup of the virtual networktopology, any authentication credentials that are to be associated withthe virtual network, and/or the like 168.

In some implementations, the CASRM cloud may accessed off-site from theuser via CASRM application 110 a and/or 110 b, which may allow the userto access and/or control various controller and/or like devices; inother implementations, the user may be able to host CASRM infrastructureon-site as an application and/or software service via CASRM application110. In some implementations, the user may pay a subscription fee and/orthe like for accessing the service, and the fee amount and/or method ofpayment may depend on the method of use that the user chooses. In someimplementations a different service may be provided to the user based onthe user's current infrastructure, management needs, and/or the like(e.g., a homeowner may obtain a different service than a landlord ofmultiple properties, and/or the like). In some implementations, forexample, a homeowner may obtain a service which allows them to control aspecified number of controllers at one site, while a landlord ofmultiple properties may need a more complete version of the service,e.g., one which supports multiple controllers on multiple sites, and/orthe like. In some implementations settings and/or service changes may beimplemented via using the user's account credentials and/or serviceaccess permissions to grant access to certain portions of the platformto the user. In some implementations the user may be able to designatesub-accounts to users of controllers at a site and/or the like, and maybe able to forward subscription costs and/or the like to thesub-accounts, may be able to receive monetary incentives for signing upsub-accounts with CASRM, and/or the like. In some implementations, usersmay be able to reassign device addresses, ownership, and/or the like onthe fly in order to adapt to temporary conditions within a building(e.g. conventions, parties, guests, and/or the like; e.g., see FIGS.12A-B).

Such unit controllers and/or appliances may also send data (e.g. usagelogs, reports, confirmations, and/or the like) to the main controller toallow the main controller to determine usage patterns and/or otheruseful information in determining further settings, restrictions, and/orthe like to issue to the devices and/or appliances. In someimplementations, said settings, restrictions, and/or the like may bedetermined dynamically as new information is provided to the maincontroller. In some implementations, example controllers which may beused include a SER8300 Room Controller with a SC3000 Relay Pack, and/orthe like.

In some implementations, referring back to FIG. 1A, data may beauthenticated by the CASRM cloud network 108 before it may beinstantiated on a controller. In other implementations, controllers mayreceive a variety of other types of information from the CASRM cloud. Insome implementations, controllers may implement a firewall in order toprovide strong security for communications. In some implementations, thecontrollers may utilize iptable rules similar to the following in orderto block unwanted incoming and outgoing traffic:

# Allow outgoing DHCP iptables -A INPUT -i eth0 -p udp --dport 67:68--sport 67:68 -j ACCEPT # Allow outgoing ICMP iptables -A OUTPUT -o eth0-p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -i eth0 -picmp --icmp-type echo-reply -j ACCEPT # Allow outgoing DNS iptables -AOUTPUT -o eth0 -p udp --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -pudp --sport 53 -j ACCEPT # Allow outgoing http iptables -A OUTPUT -oeth0 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -i eth0 -p tcp--sport 80 -j ACCEPT # Allow outgoing https iptables -A OUTPUT -o eth0-p tcp --dport 443 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --sport443 -j ACCEPT

In some implementations, in order to communicate with each other, auser's electronic device, an appliance, and/or the like, the devices mayuse the cloud to open up connections between the two devices. Forexample, if a user's electronic device wishes to send instructions tothe controller, the cloud may, after authenticating the user, send theelectronic device's current IP address and outgoing port number to thecontroller. The controller may then send a packet of information to theIP address and port that it received from the cloud, allowing thecontroller to receive data from that address. Likewise, the cloud maysend the controller's IP address and outgoing port number to theelectronic device, which may then send data to the provided address.Having already opened up its firewall for data from the electronicdevice's address, the controller may then be able to accept data fromthe electronic device, and vice-versa. In some implementations, thecontroller may also send packets of data to all of the electronicdevice's known ports (and vice-versa) in order to open all of its portsfor communication.

In some implementations, the CASRM may receive a registration requestfor a resource management device, may authenticate the registrationrequest, and may generate a first virtual local network based on therequest. The CASRM may also generate a virtual network node with avirtual local address, the virtual local address corresponding to afirst location of the virtual network node within the first virtuallocal network. The CASRM may map the virtual network node to theresource management device, and may store first virtual local networkand virtual network node information in a database.

In some implementations the CASRM may also receive a request toauthenticate an update to alter the virtual network node correspondingto the resource management device via updating the virtual local addressof the virtual network node to correspond to a location on a secondvirtual network address, and may move the resource monitoring devicefrom the first virtual network to the second virtual network viaupdating the virtual network address of the virtual network nodecorresponding to the resource monitoring device to reflect that it is onthe second virtual local network. The CASRM may then send a notificationindicating the device has been moved to the second virtual network.

In some implementations, the CASRM may also receive a registrationrequest for a secondary resource device, may authenticate theregistration request, and may generate a new virtual network node with anew virtual local address, the new virtual local address correspondingto a location of the new virtual network node within the first virtuallocal network. The CASRM may map the new virtual network node to thesecondary resource device, and may link the new virtual network node tothe virtual network node corresponding to the resource management devicewithin the first virtual local network. The CASRM may store new virtualnetwork node information in the database, and may store permissions inthe database to allow the secondary resource device to be issuedinstructions from the resource management device, the instructionsissued from the resource management device including instructions toalter the settings on the secondary resource device.

In some implementations, the secondary resource device may be a Heating,Ventilation, and Air Conditioning (HVAC) device, and the settingsaltered may be one of heating, ventilation, or air conditioningsettings. Examples of such instructions and settings include but are notlimited to: instructions for retrieving different rooms' or areas'temperature, humidity and occupancy; instructions for changing athermostat set point; instructions for retrieving and changingpredefined set points on a thermostat; instructions to copy set pointsfrom one HVAC device to another HVAC device; instructions to copy allthe changes performed to one HVAC device to another HVAC device; and/orlike instructions. In some implementations, the secondary resourcedevice may be a utility device in control of a utility resource, thesettings altered may be utility resource consumption settings, and theutility resources consumed may include electric, gas, water, and oil.For example when the secondary resource device is a lighting systemand/or a like system, the instructions and settings can include:instructions to operate a light, e.g., on, off and/or dim levels;instructions to organize the lighting devices in groups; instructions toadd, remove and/or rename a lighting group; instructions to add anremove a lighting system to a lighting group; instructions and/orpermissions to view a lighting scene; instructions and/or permission tocreate a lighting scene from current lighting settings; instructions toremove and rename existing lighting scenes; instructions and/orpermissions to add/and remove a device from a lighting scene; and/orlike instructions and/or permissions. In some implementations, thesecondary resource device may be a secondary resource management device,and the settings altered may include settings to control at least oneother secondary resource device.

FIGS. 2A-B show block diagrams illustrating relationships between users,controllers, and the cloud in some embodiments of the CASRM. In someimplementations, a main controller 206 may work on the same network 202as the rest of the electronic network-enabled devices 204 a-d in use ina home, building, site, and/or the like, and may connect to the CASRMcloud 210 using this network connection. In other implementations, themain controller may work on a separate General Packet Radio Service(GPRS) network in order to connect with the cloud on a networkcompletely separate from the main infrastructure of the home, building,and/or the like in which it is installed. The main controller may alsointeract with various unit controllers 208 a-b via the site's networkconnection, via the GPRS network connection, via a LAN, via Bluetooth,and/or the like.

A user may use a web application and/or a like user interface in orderto obtain information from the main controller and/or othernetwork-enabled devices. In some implementations the web application canprovide a user with a dashboard which enables the user to manage and/ormodified the settings of the devices installed in different sites. Forexample, a user can view all metering devices on a site and/or can viewdetailed metering information corresponding to a specific device. Insome implementations, information about a given room's temperature maybe found by querying the CASRM cloud server using a GET operation and aURI representing a thermostat's present value property. For example,sending a GET request on the CASRM cloud server using a URI may resultin the following response from the CASRM cloud server:

<?xml version=″1.0″ encoding=″UTF-8″?> <?xml-stylesheet  type=′text/xsl′ href=′/casrm/xsl′?> <real xmlns:c2g=″http://www.can2go.com″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″ writable=″true″displayName=″Present_Value″xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/casrm/xsd″xmlns=″http://obix.org/ns/schema/1.0″ val=″24″ />

In some implementations, the response may contain a real value (e.g.,24) which is equivalent to the present value property. In someimplementations, an oBix-based server may also be utilized. In someimplementations, the CASRM cloud server may not handle requests if thepath of the request does not start with an authorized server root (e.g.“/casrm” and/or the like). In some implementations “network” and/or asimilar name for the root of the node hierarchy of the CASRM cloudserver, may be used in order to determine information about variousdevices connected to the CASRM cloud server.

In some implementations a third path component, e.g., “N0015A8” and/orthe like, may identify a “node”, which may be a logical abstraction thatcan represent a main controller, control device, and/or the like.Depending on the type of node, the node may also have several sub-nodeswhich belong to it (e.g. main controllers, unit controllers, and/or thelike). In some implementations, “DEV101” may be a main controllerdesignation in the URI. In some implementations the temperature value ofa unit controller (e.g. thermostat) controlled by the main controllermay be accessed via the “Present Value” property of the “Analog Value”object “AV1. In some implementations, an analog value is arepresentation of a “real” CASRM object (a floating point value). Theweb application may use this data in order to provide the state of azone in which a controller resides, to a user of the web application.

As another example, in some implementations, finding all thetemperatures from all unit controllers and/or devices in a room mayinvolve listing all nodes in the network, listing each node's unitcontrollers and filtering only the unit controllers that representand/or control a thermostat, filtering only the objects that representthe temperature for each unit controller and/or thermostat, and gettingthe analog value of each temperature object.

In order to avoid issuing too many HTTP requests to traverse all thenodes and devices of the network, the CASRM cloud server may generatebatch requests (e.g., oBix-like batch requests and/or the like). In someimplementations, for example, the CASRM cloud server may receive a GETrequest withhttps://se-ssl-cloud.com/controllers-proxy/beta1/casrm/network/as theURI and may provide the following response:

<?xml version=″1.0″ encoding=″UTF-8″?> <?xml-stylesheet  type=′text/xsl′ href=′/obix/xsl′?> <obj xmlns:c2g=″http://www.can2go.com″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″  is=″c2g:Network ″xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/obix/xsd″href=″https://se-ssl-cloud.com/controllers- proxy/beta1/casrm/network/″xmlns=″http://obix.org/ns/schema/1.0″> <ref name=″N0015A8″xmlns:c2g=″http://www.can2go.com″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″ is=″c2g:LOCAL c2g:Node″ xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/obix/xsd″href=″N0015A8/″ xmlns=″http://obix.org/ns/schema/1.0″ /> </obj>

In some implementations, generating a batch request for information maycomprise using the HTTP POST method and using a batch URI, and/orsetting up a list of the objects the CASRM cloud server would want toread and send it as the data for this request; e.g.:

<list is=“casrm:BatchIn”> <uri is=“casrm:Read”val=“/obix/network/N0015A8”/> </list>

In some implementations, the CASRM cloud server may respond with:

<?xml version=″1.0″ encoding=″UTF-8″?> <?xml-stylesheet  type=′text/xsl′href=′/casrm/xsl′?> <list xmlns:c2g=″http://www.can2go.com″is=″casrm:BatchOut ″  href=″https://se-ssl-cloud.com/controllers-proxy/beta1/casrm/batch/″   displayName=″batch″xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/casrm/xsd″of=″casrm:obj″ xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″xmlns=″http://casrm.org/ns/schema/1.0″> <objxmins:c2g=″http://www.can2go.com″ is=″c2g:LOCAL c2g:Node″xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/casrm/xsd″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″href=″/casrm/Network/N0015A8″ xmlns=″http://casrm.org/ns/schema/1.0″><ref xmins:c2g=″http://www.can2go.com″ is=″c2g:449-D-Node_Configuration-1   c2g:449-D-Device-1″ href=″DEV100/″displayName=″St-Denis Office″  name=″DEV100″ xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/casrm/xsd″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″xmlns=″http://casrm.org/ns/schema/1.0″ /> <refxmlns:c2g=″http://www.can2go.com″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″ href=″DEV101/″ displayName=″Office 222″ name=″DEV101″xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/casrm/xsd″  is=″c2g:449-D-VT7000_Room_Controller-1 ″xmlns=″http://casrm.org/ns/schema/1.0″ /> <refxmlns:c2g=″http://www.can2go.com″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″  href=″DEV102/″ displayName=″Office 223″ name=″DEV102″xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/casrm/xsd″  is=″c2g:449-D-VT7000_Room_Controller-1 ″xmlns=″http://casrm.org/ns/schema/1.0″ /> ... <refxmins:c2g=″http://www.can2go.com″    is=″c2g:449-D-EnOcean_Switch-1   c2g:449-D-Device-1″ href=″DEV116/″ displayName=″EnOcean  Switch  222″ name=″DEV116″    xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/casrm/xsd″xmlns:xsi=″http://www.w3.org/2001/XML Schema-instance″xmlns=″http://casrm.org/ns/schema/1.0″ /> ... </obj> </list>

In some implementations the CASRM cloud server could receive a list withthe same node reference repeated several times, e.g.:

<list is=″obix:BatchIn″> <uri is=″obix:Read″val=″/casrm/network/N0015A8″/> <uri is=″obix:Read″val=″/casrm/network/N0015A8″/> <uri is=″obix:Read″val=″/casrm/network/N0015A8″/> </list>

In some implementations the CASRM cloud server's response may contain asmany objects in the list as were included in the request.

In the above example, the response comprises a list of objects that eachcontains the unit controller and/or devices belonging to a given node(e.g., main controller). In some implementations, it may be necessary tofilter the results in order to pinpoint particular information. In someimplementations, another batch request may be generated using a similarHTTP method and URI as above (POST andhttps://se-ssl-cloud.com/controllers-proxy/beta1/casrm/batch/). The listof objects to read may be the list of all devices found in the previousstep (e.g., devices of type c2g:449-D-VT7000_Room_Controller-1):

<list is=″casrm:BatchIn″> <uri  is=″casrm:Read″  val=″/casrm/network/N0015A8/DEV101/″/> <uri is=″ casrm:Read″ val=″/ casrm/network/N0015A8/DEV102/″/> <uri is=″ casrm:Read″ val=″/ casrm/network/N0015A8/DEV 103/″/> </list>

The CASRM cloud server may respond with a list containing all thesedevices' objects. In some implementations the data may be furtherfiltered in order to obtain more specific information (e.g., filteringobjects whose displayName have a “LocalTemperature” value, and/or thelike). Filtering objects whose displayName attributes have the value“LocalTemperature” may result in the following:

<ref name=“AV1” is=“c2g:449-O-Analog_Value-1 c2g:449-O-Object-1”href=“AV1/” displayName=“LocalTemperature”/>

Having the above object, the CASRM cloud server may generate anotherbatch request, wherein the batch path components may include furtherinformation in order to obtain even more particular information (e.g.the present local temperature value):

<list is=″ casrm:BatchIn″> <uri is=″ casrm:Read″ val=″/ casrm/network/N0015A8/DEV101/AV1/Present_Value″/> <uri is=″ casrm:Read″val=″/ casrm /network/N0015A8/DEV102/AV17/Present_Value″/> <uri is=″casrm:Read″ val=″/ casrm /network/N0015A8/DEV103/AV33/Present_Value″/></list>

In some implementations the AV1, AV17 and AV33 path components maybefound while filtering for objects having the value “LocalTemperature”for their displayName property. In some implementations server mayrespond with a list of real objects, representing the temperaturesvalues.

In order to know if and when a room's temperature has changed, the CASRMcloud server may use “watches” (e.g. oBix watch objects and/or the like)to monitor data in real-time. In some implementations, a client maycreate a watch object which may have a make operation on the CASRM cloudserver's WatchServiceURI, and/or a like service. The CASRM cloud servermay define a new Watch object and may provide a URI to access the newwatch object. In some implementations the client may register orunregister objects to be watched using the Watch object provided by theCASRM cloud server. The client may also periodically poll the Watch URIvia a pollChanges operation in order to determine what events haveoccurred since the URI was last polled.

In some implementations, the Watch object may be freed by the CASRMcloud server either if the client explicitly frees the Watch object(e.g. via deleting the object), or based on a predetermined condition(e.g. the URI is not polled by the client for a predetermined amount oftime, and/or the like), and/or via other mechanisms or due to otherconditions.

In some implementations Watches allow a client to maintain asubstantially real-time cache and/or event history for one or moreobjects. They may also be used to access an event stream from a feedobject.

For example, to create a watch, the client may send a HTTP POST requestto the CASRM cloud server. In some implementations the CASRM cloudserver may respond with a newly created watch object:

<?xml version=″1.0″ encoding=″UTF-8″?> <?xml-stylesheet  type=′text/xsl′href=′/obix/xsl′?> <obj xmlns:c2g=″http://www.can2go.com″is=″/template/casrm:Watch   casrm:Watch″ displayName=″watch1″xmlns=″http://casrm.org/ns/schema/1.0″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/casrm/xsd″href=https://se-ssl-cloud.com/controllers-proxy/beta1/casrm/watchService/watch1/″><op href=″pollRefresh/″  name=″pollRefresh″ out=″casrm:WatchOut″ /> <ophref=″pollChanges/″  name=″pollChanges″ out=″casrm:WatchOut″ /> <reltime name=″lease″ writable=″true″  href=″lease/″   val=″PT20S″ /> <op in=″casrm:WatchIn″   name=″remove″  href=″remove/″ /> <op   href=″delete/″ name=″delete″ /> <op in=″   casrm:WatchIn″ name=″add″out=″  casrm:WatchOut″  href=″add/″ /> </obj>

In the example response above, the newly created watch may be found atthe location specified by the schemaLocation.

In some implementations, in order to add properties watch to the newlycreated watch, the client may send a HTTP POST request to the CASRMcloud server with the following data:

<obj is=″casrm:WatchIn″> <list        name=″hrefs″of=″casrm:WatchInItem″> <uri href=″casrm:WatchInItem″val=″/casrm/network/N0015A8/DEV101/AV1/Present_Value/″> </uri> <urihref=″casrm:WatchInItem″val=″/casrm/network/N0015A8/DEV102/AV17/Present_Value/″> </uri> <urihref=″casrm:WatchInItem″val=″/casrm/network/N0015A8/DEV103/AV33/Present_Value/″> </uri> <list></obj>

In some implementations, the time between the watch creation and the addoperation may be less than the watch's lease (which may be 20 seconds bydefault). In some implementations, if the time between the watchcreation and the add operation are too far apart, the watch object maybe deleted and the add operation request may fail. If the add operationis successful, the CASRM cloud server may respond with the objects addedto the watch:

<?xml version=″1.0″ encoding=″UTF-8″?> <?xml-stylesheet    type=′text/xsl′ href=′/obix/xsl′?> <objxmlns:c2g=″http://www.can2go.com″  is=″casrm:WatchOut″ href=″https://se-ssl-cloud.com/controllers-proxy/beta1/ casrm/watchService/watch6/add/″ xsi:schemaLocation=″http://   casrm.org/ns/schema/1.0/   casrm /xsd″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″ xmlns=″http://casrm.org/ns/schema/1.0″> <list  name=″c2g:RemovedObjects″   of=″ casrm:obj″ /> <list   name=″c2g:AddedObjects″  of=″ casrm:obj″ /><list      of=″ casrm:obj″ name=″values″> <realxmlns:c2g=″http://www.can2go.com″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″   writable=″true″  href=″/ casrm /network/N0015A8/DEV102/AV17/Present_ValuedisplayName=″Present_Value″  xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/  casrm /xsd″ xmlns=″http://casrm.org/ns/schema/1.0″ val=″24″ /> <realxmlns:c2g=″http://www.can2go.com″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″    writable=″true″ href=″/ casrm /network/N0015A8/DEV103/AV33/Present_ValuedisplayName=″Present_Value″  xsi:schemaLocation=″http://casrm.org/ns/schema/1.0/  casrm /xsd″ xmlns=″http://casrm.org/ns/schema/1.0″ val=″24″ /> ... </list> </obj>

In some implementations the response may be similar to the response to a“pollRefresh” request to know which object has changed since the lastpolling request was sent.

In order to poll a watch, the client may send a HTTP POST request to thepollRefresh operation of the watch object to poll. To poll “watch1”, forexample, the client may send the request to the CASRM cloud server. Ifat least one temperature value changed, the server may respond with allobjects whose temperature changed. If no value changed, the server mayrespond with an empty list.

Regarding FIG. 2B, in some implementations, a user 212 may providesettings 214 to a main controller 216. In some implementations, thesesettings may include a temperature to keep the site at, a time limit ofhow long an appliance may run at a specified time of the day, and/or thelike. In some implementations, the user may be a homeowner, a utilityand/or resource provider, a building and/or site superintendent, and/orthe like. In some implementations, said settings may be forwarded tounit controllers 216 a-c, which may alter their own settings to matchthose issued from the main controller. Although only unit controllersare discussed hereinafter, it is to be understood that settings,instructions, and/or the like could also be sent to appliances and/orlike devices. Moreover, in some embodiments, these settings include butare not limited to instructions to change user preferences; functions tomanage site addresses; functions to manage user credentials and/or likesystem properties and functions.

In some implementations, an exemplary control sequence script formaintaining various heating and cooling settings may take a form similarto the following:

if not init then         init = true-------------------------------------------------------------------------------------------- VARIABLES:  Inputs and Outputs defined below link variable names tocontroller objects------------------------------------------------------------------------------------------        ----------------------------------------------------         --Inputs         ----------------------------------------------------            -- Physical Inputs-----------------------------------------------------------------------------------------------------------------------------------------------------            var(“outdoor_temp”,“ME.AI1”)   -- Outdoor air temperature(°C)             var(“supply_temp”,“ME.AI2”)   -- Supply air temperature(°C)             var(“return_temp”,“ME.AI3”)   -- Return air temperature(°C)             var(“static_pressure_transmitter”,“ME.M4”)  -- Systemstatic pressure transmitter reading (0-5 Vdc) to control by-pass damperor VFD.                         -- Static pressure transmitter range(Pa) must be set in AICx                         -- fixed value 0-5 Vdc            -- Software/user Input---------------------------------------------------------------------------------------------------------------------------------------------------            var(“occupied_mode”,“ME.SCH1”)  -- Operating mode: 1 =Occupied, 2 = UnOccupied            var(“bypass_damper_demand”,“ME.CO1”)  -- PID calculation ofbypass damper position             -- User defined variables-------------------------------------------------------------------------------------------------------------------------------------------------            var(“supply_lo_limit”,“ME.AV8”)  -- USER DEFINED: Supplylow-limit temperature, below this temperature, HVAC system mode isturned Off (4.5 °C)             var(“supply_hi_limit”,“ME.AV9”)  -- USERDEFINED: Supply high-limit temperature, above this temperature, Heatingoutputs are turned Off, fan stays ON ( 65°C)            var(“anticycle”,“ME.AV10”)   -- USER DEFINED: Minimum ON &OFF time duration of Heating & Cooling outputs ( 0 to 5 minutes )            var(“econo_enable_oat”,“ME.AV13”)  -- USER DEFINED: OATwhere Econo is authorised ( 13°C)            var(“econo_lo_sat”,“ME.AV14”)  -- USER DEFINED: Minimumsupply air temperature in Free Cooling mode. ( 13°C)            var(“econo_min_pos”,“ME.AV15”)  -- USER DEFINED: Minimumposition of the outside air damper in Occupied mode ( 25%)            var(“econo_damper_open_max”,“ME.AV16”)  -- USER DEFINED:Econo damper maximum position. (%)            var(“oat_cool_lock”,“ME.AV17”)  -- USER DEFINED: Disablecooling stages if OAT is colder than x degrees ( Net_PID_Cool = 0%) - (10°C)             var(“oat_heat_lock”,“ME.AV18”)  -- USER DEFINED: Disable heating stages if OAT is warmer than x degrees ( Net_PED_Heat =0%) - ( 17°F)             var(“static_pressure_setpoint”,“ME.AV19”)  --USER DEFINED: ( 100 Pa) (( 0.4 in WC)) ... ( 1po = 250 Pa )            var(“supply_air_temp_factor”,“ME. AV41”)        --------------------------------------------------------        -- Outputs        --------------------------------------------------------            -- Physical             var(“fan_command”,“ME.BO1”)  -- Fansetpoint: 1 = Start, 0 = Stop.             var(“heat_stage_1”,“ME.BO2”) -- OFF = 0 VDC; ON = 15 VDC or Preheat authorisation            var(“heat_stage_2”,“ME.AO1”)  -- OFF = 0 VDC; ON = 12 VDC orModulating Heat (SCR)             var(“econo_damper_command”,“ME.AO2”)-- Modulating 0-10 VDC             var(“cool_stage_1”,“ME.AO3”)  -- OFF= 0 VDC; ON = 12 VDC             var(“cool_stage_2”,“ME.AO4”)  -- OFF =0 VDC; ON = 12 VDC             -- Software            var(“rtu_system_mode_command”,“ME.BV2”)  -- Current HVACsystem mode: 0 = Cooling, 1 = Heating : determined by demands of thezones             var(“rtu_system_mode_demand”,“ME.BV3”)  --Transitional HVAC system mode: 0 = Cooling, 1 = Heating :rtu_system_mode_command = rtu_system_mode_demand if command stable for 2minutes             var(“heat_stage”,“ME.AV4”)  -- Current heating stage(0, 1, 2)             var(“demand_cooling”,“ME.AV22”)  -- Networkweighted Cooling demand for the main controller (%)            var(“demand_heating”,“ME.AV21”)  -- Network weighted Heatingdemand for the main controller (5)      var(“static_pressure_range”,“ME.AV20”)  -- USER DEFINED :Transmitter static pressure range ( 0 to x Pa )            var(“static_pressure”,“ME.AV24”)  -- CALCULATED: Staticpressure in Pa             var(“econo_damper_demand”,“ME.AV40”)  --Econo Damper command in %. 0% is closed.            var(“bypass_damper_command”,“ME.AV5”) -- SED-O wirelessactuator command (0-100%)             var(“heat_cool_PID”,“ME.CO1”)  --Heating/Cooling PID: 0-40 = heating; 40-60 = deadbad; 60- 100 = cooling            var(“flow_PID”,“ME.CO2”)  -- Flow PID:        --------------------------------------------------------        -- Functions        --------------------------------------------------------            -- calculate average from same remote object with same nameon all remote controllers             network_value_average =function(node_list,object,name)                 count = 0                total = 0                 for i = 1,#node_list do     ifscl.nodes[node_list[i]][“CFG1_Node_Status”].value == 0 then  -- checkthat node is online      if scl.nodes[node_list[i]][object ..“_Object_Name”].value == name then -- check that object has the rightname       count = count + 1       total = total +scl.nodes[node_list[i]][object]      end     end                 end                average = total / count    print(os.date( ) .. “calculated average is ” .. average)                 return average            end             -- send value of ref_variable toobject_destination with same name on all nodes on the network            network_value_change = function(node_list,ref_variable,object_destination,name)                 for i =1,#node_list do                     ifscl.nodes[node_list[i]][object_destination .. “_Object_Name”].value ==name then -- check that object has the right name                     scl.nodes[node_list[i]][object_destination] =ref_variable                     end                 end             end        -----------------------------------------------------------------------------------        -- Init Values: Output values set at PG init        -----------------------------------------------------------------------------------            -- init node list             node_list =string.comma_split(ME.CFG1_Node_List.value) -- Creates a table with thename of all the nodes on the network             for index =1,#node_list do                 if node_list[index] ==ME.CFG1_Node_Id.value then                     print(“Node ” ..node_list[index] .. “ removed from node_list because it is the monitor”)                    table.remove(node_list,index)                 end            end             -- Init Output Values            rtu_system_mode_demand = 0 -- cooling = 0            rtu_system_mode_command = 0 -- cooling = 0            fan_command = 0             heat_stage = 0            heat_stage_l = 0             heat_stage_2 = 0            cool_stage_l = 0             cool_stage_2 = 0            econo_damper_command = 0             -- Init Heat/Cooldemand             demand_heating =network_value_average(node_list,“AV25”,“net_PID_heat”)            demand_cooling =network_value_average(node_list,“AV26”,“net_PID_cool”)            print(“PG init at: ” .. os.date( )) elseif cycle > 15then    -- on controller (re)boot, logic will start applying after 15script iterations (15 seconds)---------------------------------------------------------------------------------------------- SCRIPT LOGIC STARTS HERE--------------------------------------------------------------------------------------------        ----------------------------------------------------------------------------------        -- Parameters limits        ----------------------------------------------------------------------------------        -- limit supply_lo_limit (5°C)         if supply_lo_limit > 10then             supply_lo_limit = 10             print(os.date( ) .. “supply_lo_limit ranges from 4 to 10 °C”)         elseif supply_lo_limit< 4 then             supply_lo_limit = 4             print(os.date( ) ..“ supply_lo_limit ranges from 4 to 10 °C”)         end         -- limitsupply_hi_limit (70°C)         if supply_hi_limit > 80 then            supply_hi_limit = 80             print(os.date( ) .. “supply_hi_limit ranges from 60 to 80 °C”)         elseif supply_hi_limit< 60 then             supply_hi_limit = 60             print(os.date( ).. “ supply_hi_limit ranges from 60 to 80 °C”)         end         --limit econo_lo_sat         if econo_lo_sat < 10 then            econo_lo_sat = 10             print(os.date( ) .. “econo_lo_sat minimum 10 °C”)         end        -------------------------------------------------------------------------        -- Multi-Zone : Distribute occupied_mode        -------------------------------------------------------------------------        -- distribute occupied_mode to all remote controllers on COV orevery 5 minutes         if every(5*60)         or changed.occupied_modethen            network_value_change(node_list,occupied_mode,“MV1”,“occupied_mode”)        end        ----------------------------------------------------------------------------------        -- Multi-Zone Demand Heating/Cooling        ----------------------------------------------------------------------------------        if every(60) then             demand_heating =network_value_average(node_list,“AV25”,“net_PID_heat”)            demand_cooling =network_value_average(node_list,“AV26”,“net_PID_cool”)         end        ----------------------------------------------------------------------------------        -- System Mode        ----------------------------------------------------------------------------------        -- set rtu_system_mode_demand based on current conditions        if demand_cooling + 5 >= demand_heating then            rtu_system_mode_demand = 0  -- Cool         else            rtu_system_mode_demand = 1  -- Heat         end         --set rtu_system_mode_command when rtu_system_mode_mode is stable for 2minutes         if stable.rtu_system_mode_demand(120) then            rtu_system_mode_command = rtu_system_mode_demand         end        -- distribute rtu_system_mode_command to all remote controllerson COV or every 2 minutes         if every(2*60)         orchanged.rtu_system_mode_command then             network_value_change(node_list,rtu_system_mode_command,“BV2”,“rtu_system_mode”)         end        -----------------------------------------------------------------------        -- Fan Operation         -- Fan run continuously in Occ mode.Fan run if demand > 15% in Unocc mode and stop when demand < 5%.        -----------------------------------------------------------------------        if occupied_mode == 1 or demand_heating > 15 or demand cooling >15 then             fan_command = 1         elseif occupied_mode == 2and demand_heating < 5 and demand_cooling < 5 then            fan_command = 0         end        -------------------------------------------------------------------------        -- Econo Damper Command         -- Routine to limitecono_damper_demand based on lo_sat and demand_cooling.        -------------------------------------------------------------------------        if occupied_mode == 1 then -- occupied mode             ifoutdoor_temp <= econo_enable_oat             and rtu_system_mode_command== 0 then-- econo enabled and mode cooling                supply_air_temp_factor =scale(supply_temp,0,econo_lo_sat - 7,0,econo_lo_sat,1) -- factor tolimit econo_damper_demand based on lo sat. ie factor 0% if supply_temp <econo_lo_sat. 100% if supply_temp > econo_lo_sat + 7. Calculation windowcan be changed by changing - 7 value in scale parameter.                econo_damper_demand  =  econo_min_pos  + (supply_air_temp_factor  * scale(demand_cooling,0,0,0,100,(100 -econo_min_pos))) -- command limited by supply air temp with minimumposition. Minimum opening if supply temp < econo_lo_sat. Opening basedon demand_cooling when supply_temp > econo_lo_sat + 7             else                econo_damper_demand = econo_min_pos             end        else             econo_damper_demand = 0         end         --econo_damper_command limitation         if econo_damper_demand >econo_damper_open_max then             econo_damper_demand =econo_damper_open max         end         -- Operation of econo damper        econo_damper_command = scale(econo_damper_demand,0,0,2,100,10)-- 0%->100% == 2VDC -> 10VDC        ------------------------------------------------------------------------        -- Heating Stages:     2 heating stages. Heating demand at 15%for stage 1, 65% for stage 2        ------------------------------------------------------------------------        if supply_temp >= supply_hi_limit  -- supply high limit        or outdoor_temp >= oat_heat_lock  -- OAT heat lockout         oroccupied_mode == 2   -- Mode Unoccupied         or supply_temp + 5 >=supply_hi_limit then-- overheat protection             heat_stage = 0            heat_stage_1 = 0             heat_stage_2 = 0         elseifoccupied_mode == 1   -- Mode Occupied         and supply_temp + 5 <supply_hi_limit then -- overheat protection             -- going up            if demand_heating >= 55 and heat_stage == 1 then -- 2ndstage heat                 heat_stage = 2                 heat_stage_1 =1                 heat_stage_2 = 12             elseif demand_heating >=15 and heat_stage == 0 then -- 1st stage heat                 heat_stage= 1                 heat_stage_1 = 1                 heat_stage_2 = 0            -- going down             elseif demand_heating < 45 andheat_stage == 2 then                 heat_stage = 1                heat_stage_1 = 1                 heat_stage_2 = 0            elseif demand_heating < 5 and heat_stage == 1 then                heat_stage = 0                 heat_stage_1 = 0                heat_stage_2 = 0             end         end        ----------------------------------------------------------------------        -- Cooling Stages        ----------------------------------------------------------------------        if supply_temp < supply_lo_limit  -- supply low limit/freezeprotection         or outdoor_temp <= oat_cool_lock  -- OAT cool lockout        or supply_temp - 5 <= supply_lo_limit then  -- subcoolprotection                 cool_stage = 0                 cool_stage_1 =0                 cool_stage_2 = 0         elseif supply_temp - 5 >supply_lo_limit then  -- subcool protection             -- going up            if demand_cooling >= 55 and cool_stage == 1 then -- 2ndstage cool                 cool_stage = 2                 cool_stage_1 =12                 cool_stage_2 = 12             elseifdemand_cooling >= 15 and cool_stage == 0 then  -- 1st stage cool                cool_stage = 1                 cool_stage_1 = 12                cool_stage_2 = 0             -- going down            elseif demand_cooling < 45 and cool_stage == 2 then                cool_stage = 1                 cool_stage_1 = 12                cool_stage_2 = 0             elseif demand_cooling < 5and cool_stage == 1 then                 cool_stage = 0                cool_stage_1 = 0                 cool_stage_2 = 0            end         end        --------------------------------------------------------------------------        -- Static Pressure Control        --------------------------------------------------------------------------        static_pressure = (static_pressure_transmitter / 5) *static_pressure_range         bypass_damper_command =scale(bypass_damper_demand,0,0,0,100,100) end -- end of script

In some implementations, unit controllers may also receive settings 220a-c from users 218 a-b who are only in control of local controllers(e.g. an employee in control of a thermostat in his office, a homeownerin control of a control device in her home, and/or the like). Theseusers may be able to send settings to controllers they own (e.g. 216a-c), and may also be able to forward those settings to othercontrollers in their possession that can be controlled through theirunit controllers (e.g. controllers 222 a-c, which may control particularrooms in a multi-room home). However, in some implementations,restrictions may be placed on who may be allowed to send instructions,settings, and/or the like to other unit controllers under the control ofthe main controller, and/or the like. For example, user 218 c may beable to send settings and/or instructions 220 c to unit controller 216c, but may not be able to send settings and/or instructions 224 a toKitchen Controller 222 c, as both user 218 and his controller may nothave permission to affect Kitchen Controller 222 c. Additionally, asunit controller 216 c and main controller 216 may have a child-parentrelationship, unit controller 216 c may not be able to send settingsand/or instructions 224 b to main controller 216. However,lower-hierarchy controllers, such as room controllers 222 a-c and unitcontrollers 216 a-c, may be able to send logs, reports, and/or the like226 to the main controller in order to allow the main controller to keeptrack of resource and/or appliance usage, local user settings, and/orthe like.

FIG. 3 shows a data flow diagram illustrating initiating a newcontroller in some embodiments of the CASRM. In some implementations, auser 302 may utilize an electronic device 304 to connect 306 to a newCASRM main controller 308 that has been installed in a home, officebuilding, and/or the like. In some implementations, the electronicdevice itself may act as a main controller, and may instead beconnecting via a webpage, application, and/or the like to CASRM cloud312 for initialization.

In some implementations, the main controller may send a controller setuprequest to the CASRM cloud. In some implementations, said request may bean XML-encoded HTTP(S) POST message, which may take a form similar tothe following:

POST /controller_setup_message.php HTTP/1.1 Host: www.CASRMproccess.comContent-Type: Application/XML Content-Length: 788 <?XML version = “1.0”encoding = “UTF-8”?> <controller_setup_message> <timestamp>2016-01-0112:30:00</timestamp>  <user_params>        <user_username>example_name</user_usemame>        <user_password>********</user_password>        <user_new>true</user_new>         <user_name>JaneSmith</user_name>         <user_address>123 Main Street, Anytown,Anytown 12345</user_address>        <user_email>example_email@example.com</user_email>        <user_phone>1111111111</user_phone>        <user_map></user_map>  </user_params>  <controller_params>        <controller_ID>12345678</controller_ID>        <controller_GPS>-73, 140</controller_GPS>  </controller_params></controller_setup_message>

In some implementations, a CASRM server 314 in the cloud may parse 316controller, user, and/or like data from the controller setup request.The server may also update the controller's data to indicate newownership, create or update a user record for the user initializing thecontroller, and/or the like 318. In some implementations such data maybe stored and/or updated in the user 324 a and/or controller 324 btables of the CASRM database 324. In some implementations, the user'sID, the controller's new location, and/or the like, may all be used toupdate records in the database. In some implementations the server mayperform these actions via a controller update query 320 to the database,which may be a PHP-encoded MYSQL message similar to the following:

<?php  ... $user = $_POST[“user_username”]; $user_password =$_POST[“user_password”]; $controller = $_POST[“controller_ID”]; ...if(mysql_num_rows(mysql_quely(“SELECT  user username,  user_password FROM  users  WHERE user_username  =   ‘$user’   AND   user_password   =  ‘$user_password’”))){ $result= mysql_query (UPDATE users SETuser_address=$user_address WHERE user_id=’$user’); $user_id =mysql_result($result, 0, “user_ID”); $result= mysql_query (UPDATEcontrollers SET user_ID=‘$user_ID’ WHERE user_id=’$user_ID’); ... } >

In some implementations, the cloud may send a controller setup response326 back to the main controller, indicating that the database hassuccessfully initialized the new user-controller relationship in thecloud. In some implementations, the user may then start to providecontroller settings, instructions, restrictions, controls, and/or thelike 328 to the main controller. The main controller may update itselfwith those settings 329, and may also send a controller update message330 to the cloud in order to indicate that a change in settings has beenmade to the main controller. In some implementations, the controllerupdate message may be an XML-encoded HTTP(S) POST message that may takea form similar to the following:

POST /controller_update_message.php HTTP/1.1 Host: www.CASRMproccess.comContent-Type: Application/XML Content-Length: 788 <?XML version = “1.0”encoding = “UTF-8”?> <controller_update_message> <timestamp>2016-01-0112:30:00</timestamp>  <user_params>        <user_name>example_name</user_name>        <user_password>********</user_password>  </user_params> <controller_params>         <controller_ID>12345678</controller_ID>        <controller_GPS>-73, 140</controller_GPS>  </controller_params> <settings>         <electricity>             <lights>                <lights_limit>12, hours</lights_limit>                <lights_limit>10, kWh</lights_limit>                <lights_Sunday>1800, 0000</lights_Sunday>                <lights_Monday>2000, 0000</lights_Monday>                ...                 <lights_Saturday>1900,0500</lights_Saturday>             </lights>             <temperature>                ...             </temperature>             ...        </electricity>         <water>            <water_gallons>20</water_gallons>             ...        </water>         <gas>             ...         </gas>        ...  </settings> </controller_update_message>

The cloud may then update the controller data in the controller's recordin the database to incorporate the new settings. In someimplementations, the cloud may keep track of all changes in settings inorder to determine historical usage statistics, historical tendenciestowards certain resource settings, schedules, and/or the like, and/orfor a like purpose. In some implementations the cloud may alsoauthenticate any request from a user to change the settings of the maincontroller, and may then send a confirmation to the main controllerbefore it changes its settings.

In some implementations, the main controller may forward the settingsreceived either from the user or from the confirmation from the cloud tounit controllers at the site 334. Additionally, whenever the maincontroller receives historical settings data via a historical settingsmessage 336, the main controller may automatically adjust its settingsand/or its algorithm for automatically maintaining settings in theabsence of user input 338, based on the historical setting datareceived. In some implementations, historical settings message 336 maybe an XML-encoded HTTP(S) POST message which may take a form similar tothe following:

POST /controller_update_message.php HTTP/1.1 Host: www.CASRMproccess.comContent-Type: Application/XML Content-Length: 788 <?XML version = “1.0”encoding = “UTF-8”?> <controller_update_message> <timestamp>2036-01-0112:30:00</timestamp>  <user_params>        <user_name>example_name</user_name>        <user_password>********</user_password>  </user_params> <controller_params>         <controller_ID>12345678</controller_ID>        <controller_GPS>-73, 140</controller_GPS>  </controller_params> <settings_history>         <settings_1>            <settings_date>2036-01-01 12:30:00</settings_date>            <electricity>             ...             </electricity>            <water>             ...             </water>            <gas>             ...             </gas>             ...        </settings_1>         <settings_2>            <settings_date>2036-05-06 12:30:00</settings_date>            <electricity>             ...             </electricity>            <water>             ...             </water>            <gas>             ...             </gas>             ...        </settings_2>         ...  </settings_history></controller_update_message>

In some implementations, the main controller may automatically adjustsettings by aggregating the historical data it possesses and determiningaverage resource use schedules and/or the like based on the averages ofthe historical data. In some implementations, the main controllerincludes a collection of functions to generate and maintain resource useschedules. In some implementation, the collection of functions includebut is not limited to: functions to retrieve the existing schedules of adetermined site; functions to edit a weekly and/or daily schedule;functions to remove and/or add a schedule entry; functions to add and/orremove a schedule; functions to rename a schedule; functions toassociate or dissociate a device with an existing schedule and the likeschedule related functions. Schedules may include weekly and/or dailytemperature settings and/or like setpoints to maintain during aparticular day and/or week.

In some implementations, in addition to the schedules the maincontroller can also include a collection of functions to generate andmaintain calendars. Such a collection of function can include but is notlimited to: functions to view existing calendars from a site; functionsto add, edit and/or remove a calendar entry; functions to add, removeand/or rename a new calendar and the like functions. Calendars mayinclude holidays, special days for resource companies (e.g., a bill duedate for a utility, dates when the utility may schedule planned outages,and/or the like) alerts about when the user should suggest adjustingmain controller settings (e.g., at the beginning or end of a season,and/or the like), main controller schedules, and/or the like.

In other implementations, the user of the main controller and/or acontrol device may be able to specify which settings, controls, and/orthe like the local user has priority over setting, and which the maincontroller and/or control device has priority over (e.g. in someimplementations, the local user's temperature settings may be set asbeing a priority over temperature settings sent from the mastercontroller, and/or the like). In further implementations, settings fromthe main controller may override the user's local settings under certaincircumstances (e.g., the main controller's settings may override theunit controller's settings when the unit controller detects no one is inthe room and/or using the appliance, resource, device, and/or the likeconnected with the unit controller, and/or the like).

FIG. 4 shows a logic flow diagram illustrating initiating a newcontroller in some embodiments of the CASRM. In some implementations,the user may connect 402 to the new CASRM main controller, or mayconnect to a controller interface via her electronic device, and mayprovide user login credentials (e.g. a username and passport), new userinformation (e.g. name, address, username, password, email, phonenumber, map of home, office/and or the like layout, and/or the like),and/or like information. In some implementations, the main controllermay receive the user's input and generate a setup request 404 to thecloud containing the user input, controller information (e.g. thecontroller ID, the controller location, and/or the like), and/or likeinformation. In some implementations, the main controller and the cloudmay connect via a TCP or UDP NAT traversal-based connection (e.g.TCP/UDP hole punching).

In some implementations, the cloud may receive 406 the setup requestfrom the main controller and parse from the data provided therein userdata, controller data, and/or the like 408 from the request. The cloudmay store any new user information in a new user record, in the CASRMdatabase 410, may update the user's existing record with any newinformation provided in the request, and/or may update controllerinformation stored in the database with the information in the request(e.g., the controller may be updated to reflect new ownership, a newaddress and/or location in a building, and/or the like). In someimplementations, once the database has been updated, the cloud maygenerate and send a setup response 412 to send to the main controller,indicating that the new settings have successfully been saved to thesystem.

After receiving 414 the setup response, the main controller mayconfigure itself based on the user-provided settings 416 (e.g., mayinitialize living room defaults if the user indicated the controller issituated in the living room, may initialize summer office defaults ifthe user indicated the date of initialization, and/or the like).

In some implementations, a user may subsequently update 418 the maincontroller's settings. The main controller may configure its internalsettings 420 based on the user-provided settings data, and then maygenerate and send a controller setting update message to the CASRMcloud. In some implementations, the user may instead provide thesettings information (e.g., to the controller and/or directly to thecloud), and the cloud, after receiving the controller settings 424 andstoring the updated settings in the controller's update history, mayauthenticate 436 the actual instantiation of the updated settings on themain controller. After configuring its internal settings, the maincontroller may generate and send controller settings update messages 428to other controllers in the site, building, unit, and/or the like.

Upon receiving historical settings data via a historical settingsmessage generated by the cloud 426 and containing aggregate settingsupdate and/or like data, the main controller may automatically updateits settings and/or the like 430 based on the history that it obtainsfrom the cloud. Should the main controller lose its connection to thecloud 432, the main controller may use a fail-safe resource managementschedule 434, may keep its own historical record of settings updates,and/or the like until its connection with the cloud has been restored.

FIG. 5 shows a data flow diagram illustrating updating controllersettings in some embodiments of the CASRM. In some implementations, auser 502 may user her electronic device 504 in order to provide settingsinput 506 to a CASRM main controller 508. In some implementations, thesettings input may include aggregate settings for a plurality of unitcontrollers and/or like devices. The main controller may send thesesettings and authentication information to the CASRM cloud via asettings authentication request 510. In some implementations, settingsauthentication request 510 may be an XML-encoded HTTP(S) POST messagethat may take a form similar to the following:

POST /settings_auth_message.php HTTP/1.1 Host: www.CASRMproccess.comContent-Type: Application/XML Content-Length: 788 <?XML version = “1.0”encoding = “UTF-8”?> <settings_authentication_request><timestamp>2016-01-01 12:30:00</timestamp>  <user_params>        <user_name>example_name</user_name>        <user_password>********</user_password>  </user_params> <controller_params_a>         <controller_ID>12345678</controller_ID>        <controller_GPS>-73, 140</controller_GPS>        <controller_new_settings>             <electricity>                <lights>                     <lights_limit>12,hours</lights_limit>                     <lights_limit>10,kWh</lights_limit>                     <lights_Sunday>1800,0000</lights_Sunday>                     <lights_Monday>2000,0000</lights_Monday>                     ...                    <lights_Saturday>1900, 0500</lights_Saturday>                </lights>                 <temperature>                ...                 </temperature>                 ...            </electricity>             <water>                <water_gallons>20</water_gallons>                 ...            </water>             <gas>                 ...            </gas>             ...         </controller_new_settings> </controller_params_a>  <controller_params_b>        <controller_ID>0987654</controller_ID>        <controller_GPS>57, -80</controller_GPS>        <controller_new_settings>             <electricity>                ...             </electricity>             <water>                ...             </water>             <gas>                ...             </gas>             ...        </controller_new_settings>  </controller_params_b> <controller_params_c>         <controller_ID>246810</controller_ID>        <controller_GPS>50, 50</controller_GPS>        <controller_new_settings>             <electricity>                ...             </electricity>        </controller_new_settings>  </controller_params_c> <controller_params_d>         <controller_ID>975311</controller_ID>        <controller_GPS>-100, -160</controller_GPS>        <controller_new_settings>             <water>                ...             </water>             <gas>                ...             </gas>        </controller_new_settings>  </controller_params_d></settings_authetication_request>

In some implementations, the cloud may authenticate 516 the request tochange controller settings via querying 518 the database 520 to ensurethe user provided the correct credentials for the main controller andfor the unit controllers. If the user is authenticated, the cloud maysend a settings authentication response 522 to the main controllerindicating that it has permission to forward 524 the settings to theunit controllers. In some implementations the settings may be sent viasettings update messages 526 a-b. In some implementations, the settingsupdate messages 526 a-c may be XML-encoded HTTP(S) POST messages thatmay take a form similar to the following:

POST /settings_update_message.php HTTP/1.1 Host: www.CASRMproccess.comContent-Type: Application/XML Content-Length: 788 <?XML version = “1.0”encoding = “UTF-8”?> <settings_update_request> <timestamp>2016-01-0112:30:00</timestamp>  <user_params>        <user_name>example_name</user_name>        <user_password>********</user_password>  </user_params> <controller_params_b>         <controller_ID>0987654</controller_ID>        <controller_GPS>57, -80</controller_GPS>        <controller_new_settings>             <electricity>                ...             </electricity>             <water>                ...             </water>             <gas>                ...             </gas>             ...        </controller_new_settings>  </controller_params_b></settings_update_request> POST /settings_update_message.php HTTP/1.1Host: www.CASRMproccess.com Content-Type: Application/XMLContent-Length: 788 <?XML version = “1.0” encoding = “UTF-8”?><settings_update_request> <timestamp>2016-01-01 12:30:00</timestamp> <user_params>         <user_name>example_name</user_name>        <user_password>********</user_password>  </user_params> <controller_params_c>         <controller_ID>246810</controller_ID>        <controller_GPS>50, 50</controller_GPS>        <controller_new_settings>             <electricity>                ...             </electricity>        </controller_new_settings>  </controller_params_c></settings_update_request> POST /settings_update_message.php HTTP/1.1Host: www.CASRMproccess.com Content-Type: Application/XMLContent-Length: 788 <?XML version = “1.0” encoding = “UTF-8”?><settings_update_request> <timestamp>2016-01-01 12:30:00</timestamp> <user_params>         <user_name>example_name</user_name>        <user_password>********</user_password>  </user_params> <controller_params_d>         <controller_ID>975311</controller_ID>        <controller_GPS>-100, -160</controller_GPS>        <controller_new_settings>             <water>                ...             </water>             <gas>                ...             </gas>        </controller_new_settings>  </controller_params_d></settings_update_request>

In some implementations, the unit controllers may need to reconciletheir local settings 530 with those issued from the main controller. Insome implementations the unit controllers may send 532 a statusconfirmation message to the main controller indicating that the settingshave successfully been sent and instantiated and/or incorporated on theunit controllers.

FIG. 6 shows a logic flow diagram illustrating updating controllersettings in some embodiments of the CASRM. In some implementations, auser may provide controller settings 602 to her main controller. Saidsettings may include temperature changes (e.g. lowering/raisingtemperatures, setting minimum/maximum temperatures, and/or the like),setting resource schedules, and/or like settings. Once the maincontroller receives the settings 604 from the user, the main controllermay generate and send a settings authentication request to the CASRMcloud 606 via a TCP or UDP NAT traversal connection (e.g. TCP/UDP holepunching). The cloud, after receiving 608 the settings authenticationrequest, may authenticate the user's request to change her controllersettings 610 based on the user's provided credentials and based on whichof the controllers the user wishes to update have records which arelinked to her account. If the authentication is successful 612, then thecloud may generate and send an authentication response to the maincontroller 616 indicating that the authentication was successful. If theauthentication is not a success 612, then the cloud may generate andsend an authentication failure response to the main controller 614. Oncethe main controller has received a settings authentication response 618,it may determine whether or not it received a notification of success orfailure 620. If authentication was successful, then the main controllermay update itself 624 with the user-provided settings, and may forward626 the applicable settings to the user's unit controllers. If theauthentication was not successful, the user may receive a notificationindicating that her settings authentication process failed 622 (e.g. theuser provided the wrong credentials, tried to send settings to acontroller she does not own, and/or the like), and may be prompted toretry submitting her settings input.

Once settings have been received by the unit controllers 628, thecontrollers may determine whether or not there are previously-submittedsettings on the unit controllers 630, or whether the unit controllersare using default (e.g., factory-default, the exact settings last sentto the unit controller by the main controller, and/or the like)settings. If a unit controller does not have existing custom settings,the unit controller may replace its default settings with the settingsreceived from the main controller 632. If a unit controller has existingcustom settings (e.g. settings from the user or a user who only hascontrol over the unit controller, and/or the like), then the unitcontroller may need to modify its existing settings to reconcile themwith the settings provided by the main controller. For example, in someimplementations, the unit controller may modify its locally-providedsettings to closely match those from the main controller, but may have apredetermined threshold that allows the unit controller to modify itssettings without needing to completely override the settings already onthe unit controller. For example, a unit controller serving as athermostat may be allowed to have settings that vary from those from themain controller by 5° F., a unit controller which controls lights may beable to leave lights on for an extra two hours in comparison with themain controller schedule each day, and/or the like.

FIG. 7 shows a block diagram illustrating control codes in someembodiments of the CASRM. In some implementations, a user may be a guestin a home, hotel, office, and/or a like location, and may wish to havetemporary control over a CASRM main controller 705. The user may see averification code 710 (e.g. a QR code, a bar code, an NFC tag, an RFIDtag, and/or the like) that they may interact with using an electronicdevice. Said verification code may contain information that the user maycapture for the purpose of authenticating with the system, and forgaining access to the controller. In some implementations, for example,the verification code may comprise a link 715 with both a URL to averification page and an authentication number, code, and/or the like720 that becomes associated with the user during the temporary controlprocess.

FIG. 8 shows a data flow diagram illustrating utilizing control codes insome embodiments of the CASRM. In some implementations, a home, buildinghotel, and/or like manager 802 may send a new guest message 804 to theCASRM server 806, indicating that a new user may be occupying a room fora specified period of time. In some implementations, new guest message804 may be an XML-encoded HTTP(S) POST message which may take a formsimilar to the following:

POST /new_guest_message.php HTTP/1.1 Host: www.CASRMproccess.comContent-Type: Application/XML Content-Length: 788 <?XML version = “1.0”encoding = “UTF-8”?> <new_guest_message> <timestamp>2016-01-0112:30:00</timestamp>          <guest_params>             <guest_name>Jane Smith</guest_name>             <guest_room>001</guest_room>              <guest_stay>2,nights<guest_stay>              <guest_username></guest_username>             <guest_address>123 Main Street, Any Town, Any City,11111</guest_address>             <guest_payment_method>credit</guest_payment_method>             <guest_payment_no>1111222233334444</guest_payment_no>         </guest_params> </new_guest_message>

In some implementations the server may store the record of the change inoccupation via a new guest query 808 to the CASRM database 810. In someimplementations, new guest query 808 may be a PHP-encoded MYSQL commandwhich may take a form similar to the following:

<?php  ...         $user = $_POST[“name”];         //$username =$_POST[”username];         $user_room = $_POST[“roomno”];         $stay= $_POST[“lengthofstay”];         ...         //if user is in thedatabase already and provided a         //$result= mysql_query (“UPDATEuser SET user_guest_room=’$user_room’ AND user_guest_stay=’$stay’ WHEREuser_username=’$username’”);         //if user is not already in thedatabase         $result= mysql_query (“INSERT INTO user (user_name,user_username, user_guest_room, user_guest_stay) VALUES(‘$user’,‘$username’, ‘$user_room’, ‘$stay’)”);         ... } >

In some implementations the server may generate 812 a new authenticationcode, verification code, and/or the like for the main controller. Insome implementations the verification code may be QR code, barcode, NFCor RFID tag, and/or a like mechanism, data. In some implementations atleast a part of the authentication code may identify the controller theguest is attempting to access (e.g. part of the authentication code maycomprise the controller model number, ID, and/or the like). The servermay send the verification code, along with an expiration time and/ordate for the code, via a new verification code message 814 to the maincontroller 816. The main controller may then display the verificationcode (e.g. if it is a QR or barcode), update the settings of apreviously-existing code (e.g. update the contents of an NFC and/or RFIDtag), and/or the like.

The guest 818 may use her electronic device 820 to interact with thecontroller, via scanning 822 the verification code for data, andextracting the data (e.g., a URL and an authentication code, and/or thelike) from said data. The guest's electronic device may use the URL,and/or a like authentication mechanism stored in the verification code,to navigate to a webpage, application, and/or the like 824 for thepurposes of authentication. The guest may be prompted to provide userdetails (e.g. name and room number, and/or the like), which, along withthe guest's device information (e.g. device ID, device type, devicemodel number, and/or the like) may be sent to the server via a controlauthentication request 826. In some implementations, the user may alsoprovide information relating to a loyalty program and/or the like for ahotel chain, and/or the like, if the guest is staying in a hotel. Insome implementations, control authentication request 826 may be anXML-encoded HTTP(S) POST message which may take a form similar to thefollowing:

POST /control_auth_request.php HTTP/1.1 Host: www.CASRMproccess.comContent-Type: Application/XML Content-Length: 788 <?XML version = “1.0”encoding = “UTF-8”?> <control_auth_request> <timestamp>2016-01-01 12 :30: 00</timestamp>         <verification_params>          <verification_URL>http://www.example_controller_url.com/id?=123456723456</verification_URL>            <verification_auth_code>123456723456</verification_auth_code>        </verification_params>         <guest_params>            <guest_name>Jane Smith</guest_name>            <guest_room>001</guest_room>             <guest_stay>2,nights<guest_stay>             <guest_username></guest_username>        </guest_params>         <device_params>            <device_ID>48759876984576347</device_ID>            <device_name>Jane\'s Phone</device_name>            <device_OS>Windows Phone 8.0</device_OS>            <device_version>8.0110327.77</device_version>            <device_model>HTC HTC6990LVW</device_model>            <device_type>mobile phone</device_type>        </device_params> </control_auth_request>

In some implementations, the server may authenticate the code providedby the guest's message 828. In some implementations the server may alsoauthenticate the guest by comparing her name and room number with thatprovided by the manager. The server may then either update the database830 to allow the guest's device which provided the authentication codeto issue settings to the controller (e.g., by updating the guest'srecord to allow control over the controller 832) from a time-restrictedURL, or may package a time-restricted application 834 for the guestwhich may allow for control on her mobile device from the application.The server may then send a control authentication response 836 to theguest's electronic device, comprising a URL or an application throughwhich the guest can interact with the controller. For example, the guestmay be able to provide resource controls, settings, and/or the like 838until her access to the controller expires (e.g. once she has vacatedthe unit, after the period specified by the manager, and/or the like).

FIG. 9 shows a logic flow diagram illustrating utilizing control codesin some embodiments of the CASRM. In some implementations, the propertymanager (e.g. a homeowner, a business manager, a hotel manager, and/orthe like) may provide information 902 pertaining to a guest who may beoccupying space in the property the manager maintains. In someimplementations the manager may provide the name of the guest, theguest's room number, the duration of the guest's stay, and/or the like.The CASRM server may, after receiving 904 the guest information, maystore it in a database (e.g. may store the guest as a new user, mayupdate an existing record related to the guest, and/or the like) 906.The server may then generate a verification code 908 for the maincontroller (e.g. a QR code and/or the like), and may save a copy of thegenerated verification code 910 for future reference (e.g. forverification purposes, for resending the code if it is corrupted on thecontroller, and/or the like). The server may then send the generatedverification code 912 to the main controller.

The guest may at some point scan 914 the verification code provided bythe main controller, and may extract data from the verification code916, such as an authorization code, a URL to a webpage and/orapplication for processing authorization, and/or the like. The guest'sdevice may navigate to the appropriate location for authorization usingthe data from the verification code 918, and may send data about herselfto the server from this location. For example, on a webpage the guestmay provider her name, room number, and/or the like, and her device,when sending this information to the server, may also include its deviceID, model number, name, and/or the like.

The CASRM server may receive the authorization information from theguest in the form of a control authorization request 920, and maydetermine whether or not the guest is authorized to access thecontroller 922 (e.g. checking the guest's record against the informationprovided by the guest, and/or the like). In some implementations, theserver may, after authorizing the guest, either update the guest'srecord in the database to indicate that she is authorized to use aserver-provided web interface 924 for issuing instructions to thecontroller during the length of her stay, or may prepare adevice-specific application for the guest's device that may allow theguest to use the application via her electronic device 926 to sendcontrols, instructions, settings, and/or the like to the controllerduring the length of her stay. The server may generate and send acontrol authorization response 928 to the guest indicating that theguest is now authorized to use the controller, the method that the guestmay use in order to connect and/or change settings on the controller,and/or the like.

In some implementations, after the guest has received the controlauthorization response 930, may start to provide resource control input(e.g. light, temperature, appliance, and/or the like settings) to thecontroller. As long as the time limit 934 for the guest's access to thecontroller has not been reached, the user may continue to alter thesettings and/or the like for the controller that she has gainedtemporary access to.

FIGS. 10A-J show diagrams illustrating controller relationships andinterfaces in some embodiments of the CASRM. For example, a user mayupload maps 1002 of her site (e.g., an apartment, a floor of a house orbuilding, a side view of a building, a plurality of buildings, and/orthe like). The user may be able to user a control device 1004 (e.g., apersonal computer, laptop, mobile phone, and/or any electronic devicecapable of connecting to a controller), to connect to and send settingsand/or the like to a main controller (e.g. main controller 1006, maincontroller 1010, main controller 1014, main controller 1024, and/or thelike). The main controller may be able to forward instructions from thecontrol device to further unit controllers (e.g. living room controller1008, unit controllers 1012 a-j, unit controllers 1016 a-f, unitcontrollers 1028 a-f, and/or the like). In other implementations, thecontrol device may also be capable of sending instructions to a unitcontroller, without connecting first to a main controller. In someimplementations, a user may be able to view the positions of eachcontroller on the map she uploads of her site (and/or of a generatedmap; see FIG. 10E). In some implementations, controllers may also usethe positions of appliances, devices, and/or the like, in addition toweather and/or location conditions, in order to automatically provideregulation to various devices, appliances, and/or the like in a site.For example, living room controller 1008 may send instructions 1009 a toappliances on the south end of a room that lower the temperature of thearea (e.g., closing blinds and raising the air conditioning output) inorder to counterbalance the effects of sunlight from southern windows(and may, inversely, send instructions 1009 b to appliances and/or thelike on the north end of a room in order to raise the temperature of thearea (e.g., turning a fan off) in order to counterbalance the coldernature of a north-facing space.

Additionally, settings may also be changed based on weather patterns theunit controllers observe (e.g., from weather reports issued from thecloud, from internal temperature readings, and/or the like) to furtherfine-tune settings dynamically, without the need for constant userinput. Other map functions integrated in some additional and/oralternative implementations include but are not limited to functions todisplay multiple sites maps; functions to view a single site map;function to view a floor map; functions to view a zone, an area and/or aroom amp; functions to access devices represented on a map; functionscombining one or more of the aforementioned map functions; and/or likemap functions.

In some implementations, a single main controller and/or control devicemay be able to control unit controllers in a single home (e.g. FIG.10A), unit controllers in different homes but on the same floor of abuilding (e.g. FIG. 10B), unit controllers spread across multiple floorsin a building (e.g. FIG. 10C), and/or the like. In some implementationsmain controllers and/or control devices may control unit controllersspread across multiple buildings in which the main controller does notneed to reside. For example, regarding FIG. 10D, the main controller1024 is being controlled by a supervisor 1022 in the building where thesupervisor resides 1020. However the main controller is still able toaccess unit controllers 1028 a-f, even though they reside in separatebuildings 1026 a-c.

Regarding FIG. 10E, in some implementations, a user may be able tocontrol a plurality of controllers across a city, state, country, and/orthe like using the same infrastructure. In some implementations, theuser may be able to use a map 1038 interface to view site and/orcontroller locations, and to view information pertaining to them (e.g.the status of the site and/or the like) via selecting a site, e.g. viamenu 1032. In some implementations the user may also be able to viewalarms 1034 and 1042, which may indicate whether problems have occurredat any sites and/or controllers. In some implementations, each alarmnotification may also comprise a description 1036 of the type of alarm,the location of the alarm, and/or the like. In some implementations theuser may also use the interface to provide instructions to sites, and/orthe like.

FIG. 10F provides an example of a user interface to view and manage aplurality of devices installed in a building connected to one or morecontrollers. In some embodiments, a user can view the devices and/orcontrollers installed in a building by floor for example first floor,second floor, all floors and the like 1044. Additionally the interfacecan communicate to the user a condition affecting one or more of thedevices and/or controllers (for example, an alarm triggered by a loss ofcommunication with one or more devices and/or controllers 1046). Furtherdetails can be also be provided to the user with respect to such acondition, for example, the cause of the condition, affected devicesand/or controllers, the location of the affected devices and/orcontrollers, and the date and/or time the alarm fired 1046.

Moreover, the interface can provide an interactive view of the floorplans e.g., 1045, such that a user can differentiate between, forexample, each room in a floor plan 1047, and can determine whereaffected devices are located in a floor e.g., 1049.

FIG. 10G provides an example of a user interface to view and manage aplurality of devices installed in an area connected to one or morecontrollers. In some implementations, an interface can provide aninteractive view of an area where multiple devices and/or controllersare installed e.g., 1060. Such an area can include indoor areas andoutdoors areas. In some implementations, the interactive view can locatea subarea where a device and/or controller is installed 1064, and theuser can access specific devices by clicking on an icon in the view1062. The icon can indicate a condition of one or more devices in thesubarea, for example, an alarm condition. In addition, the interface canfurther provide interactive menus to change the view, for example,changing the view to a room in the area 1054. In some implementations,the interface can further provide a condition of one or more devicesand/or controllers 1056 and also detail about the devices and/orcontrollers affected by such a condition 1058.

FIGS. 10H and 10I provide examples of a user interface to view andmanage a plurality of devices installed in a room connected to one ormore controllers. In some implementations, the view can include a floorplan of a room 1072, an icon representing the model and/or type of aninstalled device 1076 and a summary of a condition of one or moredevices and/or controllers 1074. In addition, the interface can furtherprovide interactive menus to view change the view for example changingthe view from one room to another 1066. In some implementations theinterface can further provide a condition of one or more devices and/orcontrollers 1068 and also detail about the devices and/or controllersaffected by such a condition 1070. FIG. 10J provides an example of auser interface to view statistical data related to the devices and/orcontrollers installed in an area, building, room and/or similar spaces.In some implementations, a user is provided with interface controllersto view aggregated data for one or more devices and/or controllersmanaged by a main controller 1078. The view can additionally be changedby other types of criteria, for example, the devices and/or controllersmanaged in a specific city. In some implementations, the user can viewthe aggregated data by, for example, the type of consumed service, e.g.,electricity, lighting, water and/or like services 1080. The displayeddata can also provide a user with an estimate of how much of such aservice will be consumed by the end of a period of time 1082 and what isthe current consumption of such a service 1084.

FIG. 11 shows a diagram illustrating controller management in someembodiments of the CASRM. In some implementations, a user may wish touser her electronic and/or control device 1102 to view portions of ahome, building, and/or the like that are under the control of a CASRMcontroller. For example, a user may be able to view cross-sections 1104of the building, and may be able to select these sections in order toview the status of controllers in the area, check controller settings1106, change controller settings, view and/or change a list of peoplewho may be authorized to change controller settings, and/or the like. Insome implementations, the settings may be transmitted to differentbuildings with the same department 1108, to a different department in adifferent building that may use similar settings and/or have similarneeds, and/or the like. In this example, a virtual Accounting buildingmay be created from the cross section spanning multiple geographiclocations. Thereafter, when making, e.g., climate, changes to thevirtual Accounting building (e.g., turning the lights off and settingthe temperature to 72 F), the affected cross sections in both Building 1and Building 2 may receive instructions to execute the new settings,while other sections (e.g., Marketing) may remain unaffected. Such anembodiment allows for eased administration of disparate locations whilemaintaining logical/organizational commonality.

FIGS. 12A-B show screenshot diagrams illustrating controllerconfigurations in some embodiments of the CASRM. In someimplementations, for example, unit controllers may exist on virtuallocal networks representing the network controllable by a particularentity (e.g. user, business, and/or the like). In some implementations,CASRM may detect which network a particular controller is virtuallyassigned to via matching its virtual address with existing virtualnetworks on the site, and may use the virtual network information todetermine who may be allowed (e.g., via account permission settingsand/or the like) to send instructions and/or the like to the controller.In some implementations, for example, on a floor of a building 1202,unit controller 1204, 1206, 1208, 1210, and 1212 may each exist within aseparate network, and a user may require permissions to access eachvirtual network in order to communicate with a controller in aparticular network, and/or the like.

In some implementations, a building 1202 may have a need to permanentlyand/or temporarily change a network a particular unit controller is in.For example, if a user is managing a convention center and/or like venueduring an event (e.g., conference, trade show, concert, and/or the like)and/or the like, and creates temporary rooms within a space, e.g., viafolding doors 1214, moveable dividers, temporary walls, and/or the like,the user may wish to put each unit controller within each temporaryspace on a separate network, e.g., so that each unit controller may betemporarily controlled by the entities occupying the temporary space.Referring to FIG. 12B, in some implementations, the user may wish toenlarge a space, combine spaces, and/or the like, via removing temporarywalls, shifting doors, and/or the like. In some implementations, whileunit controllers 1204-08 may remain on different networks, the user maywish to place unit controllers 1210 and 1212 on the same network nowthat they occupy a same temporary space. The user may choose to updatethe addresses of the controllers via the CASRM application. Oncecontrollers 1216 a and 1216 b are on the same network, the user may beable to control both through the same network, may be able to allow atemporary user access to both controllers on the new local network,and/or the like.

In some implementations, a user may be able to sign up for the servicesprovided by a CASRM main controller and/or the CASRM cloud via enteringuser sign-up information into a sign-up user interface. In someimplementations the user may be provided a different interface dependingon the subscription the user is utilizing (e.g., whether the user isusing multiple main controllers within the same site, multiple maincontrollers within different sites, a main controller in a residentialand/or similarly small site, whether the user is utilizing all of thefeatures within the CASRM, or whether the user is implementing a part ofthe CASRM infrastructure, and/or the like). In some implementations, theuser may provide information such as her name, her location, paymentinformation, floorplans, and/or like information about her site(s),and/or the like.

In some implementations, referring to FIG. 13, the user may also set upher controllers via providing identifiers, locations, and/or the likefor her main controllers, unit controllers, and/or the like. In someimplementations, the user may also add devices 1302 such as a doorand/or window sensor, a relay, an ACT24 iCT contactor, a switch, athermostat, a circuit breaker, a keycard switch, a light sensor, amodbus and/or like gateway, a motion sensor, and/or the like. In someimplementations, the user may be able to add such devices via selectingdevice icons 1304, and/or via dragging the icons to the device list area1306, where the user's list of devices controlled by a particularcontroller and/or the like may be found. The user may then be able toconfirm the added devices via an “Add Devices” button, and/or the like.

In some implementations, referring to FIG. 14, the user may be able toedit settings for her controllers, including the time, time zone, date,and/or the like for the controllers 1402, the network settings for thecontroller 1404, particular network layer (e.g., Ethernet, CANbus,Zigbee, and/or the like) settings 1406, and/or the like.

In some implementations, referring to FIG. 15, the user may also be ableto view a list 1502 of all of her devices and/or the like which havebeen added to her account, and may be able to search for 1504 and/orselect any of the devices (which, in some implementations, may also bereferred to as nodes within the user's local network) in order to editthe settings of the devices, viewing the status of the devices, and/orthe like. The user may be able to view, for example, the object nameand/or ID 1506, a value and/or setting for the device 1508, the name ofthe device 1510, a description of the device 1512, units that thedevice's sensors, and/or the like utilize 1514, the status of the device1516 (e.g. on, off, inerror, and/or the like), and/or the like. In someimplementations, the user may also be able to view the node ID 1518and/or BACnet ID 1520, and/or the like, of each device.

In some implementations, referring to FIG. 16, the user may also be ableto set permissions 1602 for the controllers, e.g., in order to determinewho may change settings and/or like aspects of the user's local network,and/or the like. In some implementations the user may set permissionsfor controllers, resource management devices, network settings, inputand/or output settings, and/or like settings, based on the type of user1604 (e.g., based on whether the user is an administrative user, regularuser, maintenance user, and/or the like).

In some implementations, referring to FIG. 17, the user may also be ableto view her controllers and/or like devices via a map interface 1702which may mark the user's devices (e.g., via green markers on the map1704), may provide sensor and/or like data from each device 1706, unitsfor the data provided by each device 1708, and/or the like.

Referring to FIG. 18, main controllers may also have device setupsettings that the user may provide upon initial bootup of the maincontroller, and/or the like. For example, the user may enter and/or viewnetwork settings 1804 (e.g., BACnet and/or ZigBee network settings),configuration settings 1806, setpoint and display settings for the maincontroller 1808, service and status view settings test outputs for themain controller 1810, and/or test outputs for the main controller 1812.

Referring to FIGS. 19A-B, network settings may include a COM address1902. Network settings may also include Zigbee network information(e.g., Pan ID 1904, channel number 1906, short address 1908, IEEEaddress 1910, network status 1912, and/or status of possible add-on ordevices connected to the main controller, including but not limited tothe status of a door contact 2002, whether a door contact is installed2004, a status of a window contact 2006 and an indicator of whether thewindow contact is installed 2008, whether there is a battery alarm for awireless switch on the network 2010, and/or whether the main controllerhas been permitted to join the network, and/or the like).

Referring to FIGS. 20A-B, network settings may further include BACnetnetwork settings (e.g., network units 2002, network language 2004, baudrate 2006, a BACnet network status 2008, a BACnet instance number for acontroller 2010 (e.g., generated by the main controller's model numberand/or the main controller's COM address, and/or the like), and/or likesettings). The BACnet and/or Zigbee network settings may be utilizedwithin a physical data link layer between controllers, and/or may beutilized within a virtual representation of the physical data link layer(e.g., see FIGS. 1B-1E for further details).

Configuration settings 1806 can include binary input (BI) settings,remote universal input (RUI) activation settings, occupancy commands, anauto mode flag, a fan menu flag, auto fan functionality, continuous fanheat, standby mode settings, a standby differential, a standby time, anunoccupied time, a temporary occupancy time, dehumidifier hysteresis,dehumidifier maximum cooling, dehumidifier lockout settings, coolingCompressor Cycle Rate (CPH), heating CPH, a status of a cooling valve, astatus of a heating valve, pulsed heating settings, a pipe number, asequence operation, a purge sample time period, a purge open timeperiod, a main password for the main controller, a user password for themain controller, a temperature calibration setting, a humiditycalibration setting, and/or a reset device settings option.

Setpoint and display settings 1808 may include a setpoint for coolingand/or heating when an area is unoccupied, a cooling and/or heatingsetpoint for when the main controller is on standby, a cooling and/orheating setpoint when the area is occupied, a default heating and/orcooling setpoint, a minimum deadband setpoint, a maximum heating and/orcooling setpoint, a minimum cooling and/or heating setpoint, adehumidifier setpoint, a display color, primary information shown on thedisplay, a standby screen enablement setting, a language setting, aunits setting, a low light backlight setting, a night backlight setting,an RH display setting, and/or a user HMI setting, and/or like setpointsand/or display settings.

Service view settings 1810 may include a firmware revision number, roomtemperature, changeover temperature, supply temperature, outdoortemperature, room humidity, effective occupancy, PI heating demand,cooling demand limit, heating demand limit, binary input (BI) settings,remote universal input (RUI) activation settings, window alarm flag,service alarm flag, filter alarm flag, local motion flag,dehumidification status, and/or a device name (e.g., generated using themain controller's MAC address, and/or the like), and/or like serviceview settings.

Test outputs settings 1812 cooling output, heating output, fan speedoutputs, pulsed heat demand output, and/or the like.

FIG. 21 illustrates a network architecture for a CASRM controllernetwork, in some embodiments. For example, a user may use administratortools 2102, e.g., such as a CASRM user interface, and/or the like, inorder to send settings and/or instructions to controllers and/or likedevices to the CASRM cloud server 2104. The CASRM cloud server can serveas a network controller and manage network connections, network nodes(and addition/removal of network nodes from the network), network nodeload balancing, and/or like functionality. The CASRM cloud server mayalso manage and maintain the virtualization of the data link layer onthe network, and/or the like. A utility administrator may use a buildingexpert cloud application, e.g., communicating data in a plurality ofnetwork protocols (including but not limited to EWS, oBIX, andBACnet-related protocols), in order to manage devices across a pluralityof sites 2108 containing a plurality of controllers. The utilityadministrator may also be able to obtain utility payments and/or thelike through the CASRM cloud server, e.g., based on the resource usagecollected by controllers within various sites, and/or the like.

The CASRM cloud server may use SSL, which may use date and time toverify that communication end points can be trusted. Htpdate may be useto query trusted https web servers and synchronize the CASRM cloudserver's date and time.

Software running on the CASRM cloud server may be managed using opkgpackage management software. This software package management system maybe similar to dpkg and Apt as used on Debian-like Linux distributions.The CASRM cloud server may also run Node.js (e.g., a JavaScriptinterpreter software platform on which the CASRM cloud server'sapplication software runs), and Controller-app (e.g., a softwareapplication encoded, for example in JavaScript and configured toestablish s communication channel between a Cloud Panel and the CASRMcloud server). Node.js (npm) modules as well as CSS and JavaScript filesto support the CASRM cloud server's web application may also beinstantiated on the CASRM cloud server. To guarantee that opkg getssoftware packages from the right server(s), the software may use HTTP(S)protocol to query a packages repository and download individual packagesfor opkg. Opkg packages may further be signed using a MD5 hash in orderto ensure the integrity of the file.

During the system boot process, an initialization script may beresponsible for starting the Controller-app application. Additionally,htpdate may run and fetch the date from the Building Expert CloudService, and set the received date as CASRM cloud server's date andtime. The controller-app module allows users to access their network ofcontrollers through the CASRM cloud server. Controller-app module may beencoded in CoffeeScript (e.g., compiled to JavaScript) and may run ontop of the Node.js platform. The CASRM cloud server application may becomposed of at least a client establishing a WebSocket tunnel between aresource management device and a CASRM cloud server, and/or anadministration web application allows Cloud Panel owners to performadministration tasks, such as registering the Cloud Panel on the CASRMcloud server. Both modules may start when the application starts andeach module can communicate with the other using Node.js events. Forexample, when a user registers the resource management device on theCloud Service using the administration interface, an event is emittedand the WebSocket tunnel is established.

The WebSocket tunnel may establish a full-duplex communication channelbetween the resource management device and the CASRM cloud server.Traffic going through this tunnel may be encrypted using SSL. The CASRMcloud server may forward client applications' requests into this tunnel.On the resource management device's end of the tunnel, these requestsmay then be forwarded to the right service, e.g., other controller, oBIXor EWS services. Before establishing the tunnel, the controller-app mayauthenticate the resource management device on the CASRM cloud server.To do so, it may verify the resource management device's ID and/or a keyassigned during the provisioning step. If the resource management devicecannot be authenticated, the WebSocket tunnel may not be established andusers may not be able to access the resource management device and/orinternal services that sit behind it.

Monitoring of the CASRM cloud server may be handled by acontroller-app-bootstrapper service, which may perform the followingtasks:

-   -   If the Controller-app module is not running,        controller-app-bootstrapper may be initiated. If it fails to        start more than a pre-determined number of times (e.g., 10        times), the CASRM cloud server may reboot.    -   A watchdog file may be written to periodically ensure that if        the monitoring process stops working, the CASRM cloud server may        reboot.

The controller-app-bootstrapper service may also periodically determineif a updates to software packages on the CASRM cloud server areavailable. If so, packages may be upgraded.

The controller-app's administration web application may be used toregister a resource management device to the CASRM cloud server. It mayinclude a form that asks a resource management device owner to enter herusername and password, as well as the resource management device's keyissued by the Building Expert Administrator. If all information iscorrect, the resource management device may be registered to the user,and the user can start to access its data from all client applicationssuch as RoomXpert-II for mobile applications, and Building Expert forweb applications.

The CASRM cloud server may use a plurality of security standards and/ortechniques in order to protect user data, and/or the like. For example,TSL/SSL may be used to authenticate connections made from the resourcemanagement device to any external service, and/or any confidential datatransferred to/from the CASRM cloud server. PGP may be used to validatethe authenticity of an upgrade package, MD5 may be used to validate theintegrity of the upgrade package, and HTTP(S) may be used to controlprivacy and user access. Communication may be done over HTTP(S) or aSecure Web Socket. In some implementations, NGINX may be a front-endexposed for a HTTP(S) and/or Secure Web Socket connection. IAM may beused to manage access and management of AWS. VPC, Bastion and Natgateway may isolate resources into a private Cloud with private subnet,as well as protect access points with security rules and whitelisting.IPtable may block all ingoing connections to the Cloud Panel. CA andX509 certificates may validate the validity of the domain. Other suchsecurity measures may also be implemented on the CASRM cloud server,such as using a dedicated stack containing all specific customerinformation, an IP white list to restrict access to specific corporatenetworks, and/or special setting for deploying Cloud Panel within aDemilitarized Zone (DMZ).

Utility administrators and/or other users may also connect to the CASRMcloud server via subscriber applications 2110 which may not be directlyhosted on the CASRM cloud server, e.g., via a plurality of applicationson a plurality of platforms (e.g., tablet applications, third-partyclient applications, a cloud application other than the building expertcloud application, and/or the like). FIGS. 22-28 show logic flowdiagrams illustrating a plurality of user account actions.

In some implementations, user profiles and controller properties may bestored in a database, e.g., in a MongoDB database, and/or the like. AMongoDB database may be utilized in order to facilitate better faultrecovery in the event of an unexpected Redis service downtime, and/orthe like. In some implementations, a user may be authenticated by thesystem using a plurality of authentication strategies, including localauthentication (e.g., form-based authentication with secured cookiesupport for session tracking, used by the web application, and/or thelike), basic authentication (e.g., HTTP(S) headers and/or likemechanisms for transmitting user credentials, and/or the like), and/orkey authentication (e.g., using a hash function and/or authenticationkey to encode a user's credentials, e.g., using Passport, and/or thelike). In some implementations, example rest resources URIs may includethe following:

GET ‘/’ (e.g., redirects to requested page if user is logged in; if not,redirects to welcome/login page);

GET ‘/controllers/password’ (e.g., returns a randomized key string);

POST ‘/controllers’ (e.g., saves new controller in persistent datastorage; if a controller with the same name exists, an error flashmessage shows);

PUT ‘/controllers/:name/update_key’ (e.g., updates controller key inpersistent data storage; if controller cannot be found, user is promptedto create it);

PUT ‘/controllers/:id’ (e.g., updates controller in persistent datastorage identified by :id only if it is owned by user);

GET ‘/controllers/:id’ (e.g., retrieves controller in persistent datastorage identified by :id);

POST ‘/controllers/’:id/register (e.g., sets ownership of controller touser registering controller; the registering of the controller isperformed from controller-app web interface);

GET ‘/obix/controllers’ (e.g., lists connected controllers in Obixformat);

POST ‘/sessions/users’ (e.g., user authentication from login page);

POST ‘/sessions/users/api_token’ (e.g., user authentication from atoken);

GET ‘/sessions/controllers (e.g., generates a token for a givencontroller);

DEL ‘/sessions/users’ (e.g., terminates user web session);

POST ‘/users’ (e.g., saves new user in persistent data storage);

POST ‘/users/lost-password’ (e.g., sends password reset link by email touser);

POST ‘/users/:username/reset-password’ (e.g., updates users password inpersistent data storage if provided validation token matches the one setin the storage at a previous step (‘/users/lost-password’));

GET ‘/users/:id (e.g., retrieves user object identified by :id);

GET ‘/users’ (e.g., retrieves user objects).

FIG. 22 shows a logic flow diagram illustrating a new subscribersign-up, in some embodiments. For example, via a login page at abuilding expert cloud web user interface 2202, a building expert cloudapplication 2204 may receive subscriber credentials and/or userregistration information 2210 inputted into the login page by a user. Ifthe data received at the building expert cloud application indicatesthat the user is an existing user, the system may proceed to verify theuser's credentials 2214 (e.g., see at least FIG. 23). If the datareceived at the building expert cloud application indicates that theuser is a new user 2212, the building expert cloud application mayredirect the user to a registration page, at which the user may submitsubscriber registration information 2218 to the building expert cloudapplication.

The building expert cloud application may check 2220 to determinewhether the subscriber registration information already exists in theCASRM database. If the information does match that of at least one userrecord in the CASRM database, the building expert cloud application maysend an error 2222 to the registration page indicating a user accountmatching at least some of the provided information was located, and/ormay suggest that the user try to log in using the submitted user accountinformation. If the credentials do not yet exist, the building expertcloud application may store the credentials in the CASRM database, andmay then send the subscription data to a billing and subscriptionmanagement module 2206, which may forward the subscription to a CustomerManagement Center service 2208 for further processing. The DTN may senda notification to the billing and subscription management module 2228indicating whether the processing of the account was successful or not.The billing and subscription management module may subsequently forward2230 the notification to the building expert cloud application.

If the user's registration data was successfully processed and anaccount was successfully created 2232, the building expert cloudapplication may send a confirmation to the user 2236 indicating that theregistration was successful, and may redirect the user to the home pageof the building expert cloud web user interface. If there were anyproblems with processing the user's registration data and/or creating anaccount, the building expert cloud application may send a notificationto the user 2234 indicating that the system could not create an accountfor the user, and/or may prompt the user to retry his registration datasubmission.

FIG. 23 shows a logic flow diagram illustrating logging into asubscriber account, in some embodiments. For example, a user may providesubscriber credentials 2310 to a login page in a building expert cloudweb user interface 2302, which may provide the credentials to a buildingexpert cloud application 2304. The building expert cloud application mayattempt to authenticate 2312 the credentials (e.g., determine whetherthe credentials follow usual credential requirements, and may provide anerror message 2314 to the login page if the credentials were invalid. Ifthe credentials were valid, the building expert cloud application maysend a message 2316 to a billing and subscription management module 2306for processing and/or retrieval of account data. The billing andsubscription management module may, for example, provide the useridentification information to a DTN 2308 via a GET request for the useraccount data 2318. The DTN may return the user's account data 2320,and/or an error message. The billing and subscription management modulemay forward this data 2322 to the building expert cloud application,which may determine whether the data indicates that the accountcredentials were valid or invalid 2324 (e.g., the account credentialsare valid if an account in the DTN matched the credentials, and/or thelike). If the credentials were valid 2328, the user may be directed to abuilding expert cloud web user interface home page. If the credentialswere invalid, an error 2326 may be forwarded to the user indicating thatan account matching the credentials could not be found.

FIG. 24 shows a logic flow diagram illustrating logging into asubscriber account, in some embodiments. In some implementations, a usermay log into her user account, e.g., via a process 2410-2428 similar tothat in FIG. 23. The user, via an account page on the building expertcloud web user interface home page 2402, may initiate an accountcancellation request 2430. The building expert cloud application 2404may receive the cancellation data and may forward 2432 it to the billingand subscription management module 2406. The billing and subscriptionmanagement module may interact with the DTN 2408 in order to have theaccount cancelled (e.g., marked inactive, deleted, and/or the like). TheDTN may send a confirmation message 2434 to the billing and subscriptionmanagement module once it has attempted to process the accountcancellation. The billing and subscription management module may forwardthe confirmation 2436 to the building expert cloud application, whichmay in turn forward the confirmation 2438 to the building expert cloudweb user interface account page, e.g., such that the user may beinformed that the cancellation has successfully or unsuccessfully beprocessed, and/or the like.

FIG. 25 shows a logic flow diagram illustrating adding a license to anaccount, in some embodiments. In some implementations, a user may loginto her user account, e.g., via a process 2510-2528 similar to that inFIG. 23. A user may indicate to the building expert cloud web userinterface 2502 account page that she would like to purchase a servicelicense, at which point the building expert cloud web user interface mayforward the user's data (e.g., credentials, selection for the license,and/or the like) to the building expert cloud application 2504. Thebuilding expert cloud application may forward 2532 the data to thebilling and subscription management module 2506, which may in turnforward 2534 the data to the DTN 2508. The DTN may process the requestto purchase the license, and may generate and send a confirmationmessage 2536 to the billing and subscription management module. Thebilling and subscription management module may forward the confirmationmessage 2538 to the building expert cloud application, which may in turnforward the confirmation 2540 to the building expert cloud web userinterface for display to the user.

FIG. 26 shows a logic flow diagram illustrating upgrading a license foran account, in some embodiments. In some implementations, a user may loginto her user account, e.g., via a process 2610-2628 similar to that inFIG. 23. A user may indicate to the building expert cloud web userinterface 2602 account page that she would like to upgrade a servicelicense, at which point the building expert cloud web user interface mayforward the user's data (e.g., credentials, selection for the upgradedlicense, and/or the like) to the building expert cloud application 2604.The building expert cloud application may forward 2534 the data to thebilling and subscription management module 2606, which may in turnforward 2536 the data to the DTN 2608. The DTN may process the requestto upgrade the license, and may generate and send a confirmation message2538 to the billing and subscription management module. The billing andsubscription management module may forward the confirmation message 2540to the building expert cloud application, which may in turn forward theconfirmation 2542 to the building expert cloud web user interface fordisplay to the user.

FIG. 27 shows a logic flow diagram illustrating changing a password foran account, in some embodiments. In some implementations, a user may loginto her user account, e.g., via a process 2710-2728 similar to that inFIG. 23. A user may indicate to the building expert cloud web userinterface 2702 account page that she would like to change her password,at which point the building expert cloud web user interface may forwardthe user's data 2730 (e.g., credentials, new password, and/or the like)to the building expert cloud application 2704.

The building expert cloud application may forward 2732 the data to thebilling and subscription management module 2706, which may in turnforward 2736 the data to the DTN 2708. The DTN may process the requestto upgrade the user's password, and may generate and send a confirmationmessage 2738 to the billing and subscription management module. Thebilling and subscription management module may forward the confirmationmessage 2740 to the building expert cloud application, which may in turnforward the confirmation 2742 to the building expert cloud web userinterface for display to the user.

FIG. 28 shows a logic flow diagram illustrating manually renewing anaccount, in some embodiments. In some implementations, a user may loginto her user account, e.g., via a process 2810-2826 similar to that inFIG. 23. The building expert cloud application may, while validating theuser's account, determine that the account and/or user's subscription isinvalid 2828. A user may be prompted by the building expert cloud webuser interface 2802 renewal page that she should renew her subscription.If the user does renew her subscription, the building expert cloud webuser interface may forward the user's data 2830 (e.g., credentials,renewal account information, payment information, and/or the like) tothe building expert cloud application 2804. The building expert cloudapplication may forward 2832 the data to the billing and subscriptionmanagement module 2806, which may in turn forward 2834 the data to theDTN 2808. The DTN may process the request to renew the user's account(e.g., by processing the payment and/or renewal data, and/or the like),and may generate and send a confirmation message 2836 to the billing andsubscription management module. The billing and subscription managementmodule may forward the confirmation message 2838 to the building expertcloud application. The building expert cloud application may thendetermine 2840 whether or not the subscription was successfully renewed.If the subscription has been successfully renewed, the building expertcloud application may send a confirmation 2844 to the building expertcloud web user interface indicating that the subscription is now validand/or active again. If the subscription renewal was unsuccessful, thebuilding expert cloud application may send an error message 2832 to thebuilding expert cloud web user interface indicating that the user mayretry renewing the subscription.

FIG. 29 illustrates a diagram of an object hierarchy in a CASRMcontroller, in some embodiments. For example, a project object 2902 mayinclude attributes including but not limited to a project name, projectdescription, project location, project image, and/or a project objectslist. A project object may represent a project for a particular utilityadministrator, and/or the like. The project objects list may include atleast one site object 2904. A site object may include attributesincluding but not limited to a site name, a site description, a sitelocation, a site image, and/or a site objects list. A site object mayrepresent a geographic location at which the administrator may monitor aplurality of resource management devices and/or like equipment.

The site objects list, in turn, may include at least one building object2906. A building object may include attributes such as a building name,a building description, a building location, a building image, and/or abuilding objects list.

A building object may represent a building, e.g., a home, commercialbuilding, hotel, and/or the like which may contain a plurality ofresource management devices and/or like equipment. The building objectslist may include at least one floor object 2908, which may representfloors within the building. A floor object may include a floor name,floor description, a floor location, a floor image, and a floor objectslist. The floor objects list may include at least one zone object 2910.A zone object may represent a zone within a floor (e.g., a room, acollection of rooms, and/or the like) which may be related to theproject. The zone object may include a zone name, zone description, azone location, a zone image, and a zone objects list. The zone objectslist may include at least one equipment object 2912, which may representa resource management device, a utility device, and/or another devicewhich may be used within a zone. An equipment object may include aequipment name, equipment description, a equipment location, a equipmentimage, and a equipment objects list.

In some implementations, a project may have at least one site, which maycontain at least one of a building, a floor, a zone, or equipment (e.g.,a project need not comprise each of a building, floor, zone, andequipment).

CASRM Controller

FIG. 30 shows a block diagram illustrating embodiments of a CASRMcontroller. In this embodiment, the CASRM controller 3001 may serve toaggregate, process, store, search, serve, identify, instruct, generate,match, and/or facilitate interactions with a computer through NFC andvirtual wallet technologies, and/or other related data.

Typically, users, which may be people and/or other systems, may engageinformation technology systems (e.g., computers) to facilitateinformation processing. In turn, computers employ processors to processinformation; such processors 3003 may be referred to as centralprocessing units (CPU). One form of processor is referred to as amicroprocessor. CPUs use communicative circuits to pass binary encodedsignals acting as instructions to enable various operations. Theseinstructions may be operational and/or data instructions containingand/or referencing other instructions and data in various processoraccessible and operable areas of memory 3029 (e.g., registers, cachememory, random access memory, etc.). Such communicative instructions maybe stored and/or transmitted in batches (e.g., batches of instructions)as programs and/or data components to facilitate desired operations.These stored instruction codes, e.g., programs, may engage the CPUcircuit components and other motherboard and/or system components toperform desired operations. One type of program is a computer operatingsystem, which, may be executed by CPU on a computer; the operatingsystem enables and facilitates users to access and operate computerinformation technology and resources. Some resources that may beemployed in information technology systems include: input and outputmechanisms through which data may pass into and out of a computer;memory storage into which data may be saved; and processors by whichinformation may be processed.

These information technology systems may be used to collect data forlater retrieval, analysis, and manipulation, which may be facilitatedthrough a database program. These information technology systems provideinterfaces that allow users to access and operate various systemcomponents.

In one embodiment, the CASRM controller 3001 may be connected to and/orcommunicate with entities such as, but not limited to: one or more usersfrom user input devices 3011; peripheral devices 3012; an optionalcryptographic processor device 3028; and/or a communications network3013.

Networks are commonly thought to comprise the interconnection andinteroperation of clients, servers, and intermediary nodes in a graphtopology. It should be noted that the term “server” as used throughoutthis application refers generally to a computer, other device, program,or combination thereof that processes and responds to the requests ofremote users across a communications network. Servers serve theirinformation to requesting “clients.” The term “client” as used hereinrefers generally to a computer, program, other device, user and/orcombination thereof that is capable of processing and making requestsand obtaining and processing any responses from servers across acommunications network. A computer, other device, program, orcombination thereof that facilitates, processes information andrequests, and/or furthers the passage of information from a source userto a destination user is commonly referred to as a “node.” Networks aregenerally thought to facilitate the transfer of information from sourcepoints to destinations. A node specifically tasked with furthering thepassage of information from a source to a destination is commonly calleda “router.” There are many forms of networks such as Local Area Networks(LANs), Pico networks, Wide Area Networks (WANs), Wireless Networks(WLANs), etc. For example, the Internet is generally accepted as beingan interconnection of a multitude of networks whereby remote clients andservers may access and interoperate with one another.

The CASRM controller 3001 may be based on computer systems that maycomprise, but are not limited to, components such as: a computersystemization 3002 connected to memory 3029.

Computer Systemization

A computer systemization 3002 may comprise a clock 3030, centralprocessing unit (“CPU(s)” and/or “processor(s)” (these terms are usedinterchangeable throughout the disclosure unless noted to the contrary))3003, a memory 3029 (e.g., a read only memory (ROM) 3006, a randomaccess memory (RAM) 3005, etc.), and/or an interface bus 3007, and mostfrequently, although not necessarily, are all interconnected and/orcommunicating through a system bus 3004 on one or more (mother)board(s)3002 having conductive and/or otherwise transportive circuit pathwaysthrough which instructions (e.g., binary encoded signals) may travel toeffectuate communications, operations, storage, etc. The computersystemization may be connected to a power source 3086; e.g., optionallythe power source may be internal. Optionally, a cryptographic processor3026 and/or transceivers (e.g., ICs) 3074 may be connected to the systembus. In another embodiment, the cryptographic processor and/ortransceivers may be connected as either internal and/or externalperipheral devices 3012 via the interface bus I/O. In turn, thetransceivers may be connected to antenna(s) 3075, thereby effectuatingwireless transmission and reception of various communication and/orsensor protocols; for example the antenna(s) may connect to: a TexasInstruments WiLink WL1283 transceiver chip (e.g., providing 802.11n,Bluetooth 3.0, FM, global positioning system (GPS) (thereby allowingCASRM controller to determine its location)); Broadcom BCM4329FKUBGtransceiver chip (e.g., providing 802.11n, Bluetooth 2.1+EDR, FM, etc.);a Broadcom BCM4750IUB8 receiver chip (e.g., GPS); an InfineonTechnologies X-Gold 618-PMB9800 (e.g., providing 2G/3G HSDPA/HSUPAcommunications); and/or the like. The system clock typically has acrystal oscillator and generates a base signal through the computersystemization's circuit pathways. The clock is typically coupled to thesystem bus and various clock multipliers that will increase or decreasethe base operating frequency for other components interconnected in thecomputer systemization. The clock and various components in a computersystemization drive signals embodying information throughout the system.Such transmission and reception of instructions embodying informationthroughout a computer systemization may be commonly referred to ascommunications. These communicative instructions may further betransmitted, received, and the cause of return and/or replycommunications beyond the instant computer systemization to:communications networks, input devices, other computer systemizations,peripheral devices, and/or the like. It should be understood that inalternative embodiments, any of the above components may be connecteddirectly to one another, connected to the CPU, and/or organized innumerous variations employed as exemplified by various computer systems.

The CPU comprises at least one high-speed data processor adequate toexecute program components for executing user and/or system-generatedrequests. Often, the processors themselves will incorporate variousspecialized processing units, such as, but not limited to: integratedsystem (bus) controllers, memory management control units, floatingpoint units, and even specialized processing sub-units like graphicsprocessing units, digital signal processing units, and/or the like.Additionally, processors may include internal fast access addressablememory, and be capable of mapping and addressing memory 3029 beyond theprocessor itself; internal memory may include, but is not limited to:fast registers, various levels of cache memory (e.g., level 1, 2, 3,etc.), RAM, etc. The processor may access this memory through the use ofa memory address space that is accessible via instruction address, whichthe processor can construct and decode allowing it to access a circuitpath to a specific memory address space having a memory state. The CPUmay be a microprocessor such as: AMD's Athlon, Duron and/or Opteron;ARM's application, embedded and secure processors; IBM and/or Motorola'sDragonBall and PowerPC; IBM's and Sony's Cell processor; Intel'sCeleron, Core (2) Duo, Itanium, Pentium, Xeon, and/or XScale; and/or thelike processor(s). The CPU interacts with memory through instructionpassing through conductive and/or transportive conduits (e.g., (printed)electronic and/or optic circuits) to execute stored instructions (i.e.,program code) according to conventional data processing techniques. Suchinstruction passing facilitates communication within the CASRMcontroller and beyond through various interfaces. Should processingrequirements dictate a greater amount speed and/or capacity, distributedprocessors (e.g., Distributed CASRM), mainframe, multi-core, parallel,and/or super-computer architectures may similarly be employed.Alternatively, should deployment requirements dictate greaterportability, smaller Personal Digital Assistants (PDAs) may be employed.

Depending on the particular implementation, features of the CASRM may beachieved by implementing a microcontroller such as CAST's R8051XC2microcontroller; Intel's MCS 51 (i.e., 8051 microcontroller); and/or thelike. Also, to implement certain features of the CASRM, some featureimplementations may rely on embedded components, such as:

Application-Specific Integrated Circuit (“ASIC”), Digital SignalProcessing (“DSP”), Field Programmable Gate Array (“FPGA”), and/or thelike embedded technology. For example, any of the CASRM componentcollection (distributed or otherwise) and/or features may be implementedvia the microprocessor and/or via embedded components; e.g., via ASIC,coprocessor, DSP, FPGA, and/or the like. Alternately, someimplementations of the CASRM may be implemented with embedded componentsthat are configured and used to achieve a variety of features or signalprocessing.

Depending on the particular implementation, the embedded components mayinclude software solutions, hardware solutions, and/or some combinationof both hardware/software solutions. For example, CASRM featuresdiscussed herein may be achieved through implementing FPGAs, which are asemiconductor devices containing programmable logic components called“logic blocks”, and programmable interconnects, such as the highperformance FPGA Virtex series and/or the low cost Spartan seriesmanufactured by Xilinx. Logic blocks and interconnects can be programmedby the customer or designer, after the FPGA is manufactured, toimplement any of the CASRM features. A hierarchy of programmableinterconnects allow logic blocks to be interconnected as needed by theCASRM system designer/administrator, somewhat like a one-chipprogrammable breadboard. An FPGA's logic blocks can be programmed toperform the operation of basic logic gates such as AND, and XOR, or morecomplex combinational operators such as decoders or mathematicaloperations. In most FPGAs, the logic blocks also include memoryelements, which may be circuit flip-flops or more complete blocks ofmemory. In some circumstances, the CASRM may be developed on regularFPGAs and then migrated into a fixed version that more resembles ASICimplementations. Alternate or coordinating implementations may migrateCASRM controller features to a final ASIC instead of or in addition toFPGAs. Depending on the implementation all of the aforementionedembedded components and microprocessors may be considered the “CPU”and/or “processor” for the CASRM.

Power Source

The power source 3086 may be of any standard form for powering smallelectronic circuit board devices such as the following power cells:alkaline, lithium hydride, lithium ion, lithium polymer, nickel cadmium,solar cells, and/or the like. Other types of AC or DC power sources maybe used as well. In the case of solar cells, in one embodiment, the caseprovides an aperture through which the solar cell may capture photonicenergy. The power cell is connected to at least one of theinterconnected subsequent components of the CASRM thereby providing anelectric current to all subsequent components. In one example, the powersource 3086 is connected to the system bus component 3004. In analternative embodiment, an outside power source 3086 is provided througha connection across the I/O 3008 interface. For example, a USB and/orIEEE 1394 connection carries both data and power across the connectionand is therefore a suitable source of power.

Interface Adapters

Interface bus(ses) 3007 may accept, connect, and/or communicate to anumber of interface adapters, conventionally although not necessarily inthe form of adapter cards, such as but not limited to: input outputinterfaces (I/O) 3008, storage interfaces 3009, network interfaces 3010,and/or the like. Optionally, cryptographic processor interfaces 3027similarly may be connected to the interface bus. The interface busprovides for the communications of interface adapters with one anotheras well as with other components of the computer systemization.Interface adapters are adapted for a compatible interface bus. Interfaceadapters conventionally connect to the interface bus via a slotarchitecture. Conventional slot architectures may be employed, such as,but not limited to: Accelerated Graphics Port (AGP), Card Bus,(Extended) Industry Standard Architecture ((E)ISA), Micro ChannelArchitecture (MCA), NuBus, Peripheral Component Interconnect (Extended)(PCI(X)), PCI Express, Personal Computer Memory Card InternationalAssociation (PCMCIA), and/or the like.

Storage interfaces 3009 may accept, communicate, and/or connect to anumber of storage devices such as, but not limited to: storage devices3014, removable disc devices, and/or the like. Storage interfaces mayemploy connection protocols such as, but not limited to: (Ultra)(Serial) Advanced Technology Attachment (Packet Interface) ((Ultra)(Serial) ATA(PI)), (Enhanced) Integrated Drive Electronics ((E)IDE),Institute of Electrical and Electronics Engineers (IEEE) 1394, fiberchannel, Small Computer Systems Interface (SCSI), Universal Serial Bus(USB), and/or the like.

Network interfaces 3010 may accept, communicate, and/or connect to acommunications network 3013. Through a communications network 3013, theCASRM controller is accessible through remote clients 3033 b (e.g.,computers with web browsers) by users 3033 a. Network interfaces mayemploy connection protocols such as, but not limited to: direct connect,Ethernet (thick, thin, twisted pair 10/100/1000 Base T, and/or thelike), Token Ring, wireless connection such as IEEE 802.11a-x, and/orthe like. Should processing requirements dictate a greater amount speedand/or capacity, distributed network controllers (e.g., DistributedCASRM), architectures may similarly be employed to pool, load balance,and/or otherwise increase the communicative bandwidth required by theCASRM controller. A communications network may be any one and/or thecombination of the following: a direct interconnection; the Internet; aLocal Area Network (LAN); a Metropolitan Area Network (MAN); anOperating Missions as Nodes on the Internet (OMNI); a secured customconnection; a Wide Area Network (WAN); a wireless network (e.g.,employing protocols such as, but not limited to a Wireless ApplicationProtocol (WAP), I-mode, and/or the like); and/or the like. A networkinterface may be regarded as a specialized form of an input outputinterface. Further, multiple network interfaces 3010 may be used toengage with various communications network types 3013. For example,multiple network interfaces may be employed to allow for thecommunication over broadcast, multicast, and/or unicast networks.

Input Output interfaces (I/O) 3008 may accept, communicate, and/orconnect to user input devices 3011, peripheral devices 3012,cryptographic processor devices 3028, and/or the like. I/O may employconnection protocols such as, but not limited to: audio: analog,digital, monaural, RCA, stereo, and/or the like; data: Apple Desktop Bus(ADB), IEEE 1394a-b, serial, universal serial bus (USB); infrared;joystick; keyboard; midi; optical; PC AT; PS/2; parallel; radio; videointerface: Apple Desktop Connector (ADC), BNC, coaxial, component,composite, digital, Digital Visual Interface (DVI), high-definitionmultimedia interface (HDMI), RCA, RF antennae, S-Video, VGA, and/or thelike; wireless transceivers: 802.11a/b/g/n/x; Bluetooth; cellular (e.g.,code division multiple access (CDMA), high speed packet access(HSPA(+)), high-speed downlink packet access (HSDPA), global system formobile communications (GSM), long term evolution (LTE), WiMax, etc.);and/or the like. One typical output device may include a video display,which typically comprises a Cathode Ray Tube (CRT) or Liquid CrystalDisplay (LCD) based monitor with an interface (e.g., DVI circuitry andcable) that accepts signals from a video interface, may be used. Thevideo interface composites information generated by a computersystemization and generates video signals based on the compositedinformation in a video memory frame. Another output device is atelevision set, which accepts signals from a video interface. Typically,the video interface provides the composited video information through avideo connection interface that accepts a video display interface (e.g.,an RCA composite video connector accepting an RCA composite video cable;a DVI connector accepting a DVI display cable, etc.).

User input devices 3011 often are a type of peripheral device 512 (seebelow) and may include: card readers, dongles, finger print readers,gloves, graphics tablets, joysticks, keyboards, microphones, mouse(mice), remote controls, retina readers, touch screens (e.g.,capacitive, resistive, etc.), trackballs, trackpads, sensors (e.g.,accelerometers, ambient light, GPS, gyroscopes, proximity, etc.),styluses, and/or the like.

Peripheral devices 3012 may be connected and/or communicate to I/Oand/or other facilities of the like such as network interfaces, storageinterfaces, directly to the interface bus, system bus, the CPU, and/orthe like. Peripheral devices may be external, internal and/or part ofthe CASRM controller. Peripheral devices may include: antenna, audiodevices (e.g., line-in, line-out, microphone input, speakers, etc.),cameras (e.g., still, video, webcam, etc.), dongles (e.g., for copyprotection, ensuring secure transactions with a digital signature,and/or the like), external processors (for added capabilities; e.g.,crypto devices 528), force-feedback devices (e.g., vibrating motors),network interfaces, printers, scanners, storage devices, transceivers(e.g., cellular, GPS, etc.), video devices (e.g., goggles, monitors,etc.), video sources, visors, and/or the like. Peripheral devices ofteninclude types of input devices (e.g., cameras).

It should be noted that although user input devices and peripheraldevices may be employed, the CASRM controller may be embodied as anembedded, dedicated, and/or monitor-less (i.e., headless) device,wherein access would be provided over a network interface connection.

Cryptographic units such as, but not limited to, microcontrollers,processors 3026, interfaces 3027, and/or devices 3028 may be attached,and/or communicate with the CASRM controller. A MC68HC16microcontroller, manufactured by Motorola Inc., may be used for and/orwithin cryptographic units. The MC68HC16 microcontroller utilizes a16-bit multiply-and-accumulate instruction in the 16 MHz configurationand requires less than one second to perform a 512-bit RSA private keyoperation. Cryptographic units support the authentication ofcommunications from interacting agents, as well as allowing foranonymous transactions. Cryptographic units may also be configured aspart of the CPU. Equivalent microcontrollers and/or processors may alsobe used. Other commercially available specialized cryptographicprocessors include: Broadcom's CryptoNetX and other Security Processors;nCipher's nShield; SafeNet's Luna PCI (e.g., 7100) series; SemaphoreCommunications' 40 MHz Roadrunner 184; Sun's Cryptographic Accelerators(e.g., Accelerator 6000 PCIe Board, Accelerator 500 Daughtercard); ViaNano Processor (e.g., L2100, L2200, U2400) line, which is capable ofperforming 500+ MB/s of cryptographic instructions; VLSI Technology's 33MHz 6868; and/or the like.

Memory

Generally, any mechanization and/or embodiment allowing a processor toaffect the storage and/or retrieval of information is regarded as memory3029. However, memory is a fungible technology and resource, thus, anynumber of memory embodiments may be employed in lieu of or in concertwith one another. It is to be understood that the CASRM controllerand/or a computer systemization may employ various forms of memory 3029.For example, a computer systemization may be configured wherein theoperation of on-chip CPU memory (e.g., registers), RAM, ROM, and anyother storage devices are provided by a paper punch tape or paper punchcard mechanism; however, such an embodiment would result in an extremelyslow rate of operation. In a typical configuration, memory 3029 willinclude ROM 3006, RAM 3005, and a storage device 3014. A storage device3014 may be any conventional computer system storage. Storage devicesmay include a drum; a (fixed and/or removable) magnetic disk drive; amagneto-optical drive; an optical drive (i.e., Blu ray, CDROM/RAM/Recordable (R)/ReWritable (RW), DVD R/RW, HD DVD R/RW etc.); anarray of devices (e.g., Redundant Array of Independent Disks (RAID));solid state memory devices (USB memory, solid state drives (SSD), etc.);other processor-readable storage mediums; and/or other devices of thelike. Thus, a computer systemization generally requires and makes use ofmemory.

Component Collection

The memory 3029 may contain a collection of program and/or databasecomponents and/or data such as, but not limited to: operating systemcomponent(s) 3015 (operating system); information server component(s)3016 (information server); user interface component(s) 3017 (userinterface); Web browser component(s) 3018 (Web browser); database(s)3019; mail server component(s) 3021; mail client component(s) 3022;cryptographic server component(s) 3020 (cryptographic server); the CASRMcomponent(s) 3035, including components 3041-3043; and/or the like(i.e., collectively a component collection). These components may bestored and accessed from the storage devices and/or from storage devicesaccessible through an interface bus. Although non-conventional programcomponents such as those in the component collection, typically, arestored in a local storage device 3014, they may also be loaded and/orstored in memory such as: peripheral devices, RAM, remote storagefacilities through a communications network, ROM, various forms ofmemory, and/or the like.

Operating System

The operating system component 3015 is an executable program componentfacilitating the operation of the CASRM controller. Typically, theoperating system facilitates access of I/O, network interfaces,peripheral devices, storage devices, and/or the like. The operatingsystem may be a highly fault tolerant, scalable, and secure system suchas: Apple Macintosh OS X (Server); AT&T Plan 9; Be OS; Unix andUnix-like system distributions (such as AT&T's UNIX; Berkley SoftwareDistribution (BSD) variations such as FreeBSD, NetBSD, OpenBSD, and/orthe like; Linux distributions such as Red Hat, Ubuntu, and/or the like);and/or the like operating systems. However, more limited and/or lesssecure operating systems also may be employed such as Apple MacintoshOS, IBM OS/2, Microsoft DOS, Microsoft Windows2000/2003/3.1/95/98/CE/Millenium/NT/Vista/XP (Server), Palm OS, and/orthe like. An operating system may communicate to and/or with othercomponents in a component collection, including itself, and/or the like.Most frequently, the operating system communicates with other programcomponents, user interfaces, and/or the like. For example, the operatingsystem may contain, communicate, generate, obtain, and/or provideprogram component, system, user, and/or data communications, requests,and/or responses. The operating system, once executed by the CPU, mayenable the interaction with communications networks, data, I/O,peripheral devices, program components, memory, user input devices,and/or the like. The operating system may provide communicationsprotocols that allow the CASRM controller to communicate with otherentities through a communications network 3013. Various communicationprotocols may be used by the CASRM controller as a subcarrier transportmechanism for interaction, such as, but not limited to: multicast,TCP/IP, UDP, unicast, and/or the like.

Information Server

An information server component 3016 is a stored program component thatis executed by a CPU. The information server may be a conventionalInternet information server such as, but not limited to Apache SoftwareFoundation's Apache, Microsoft's Internet Information Server, and/or thelike. The information server may allow for the execution of programcomponents through facilities such as Active Server Page (ASP), ActiveX,(ANSI) (Objective-) C (++), C# and/or .NET, Common Gateway Interface(CGI) scripts, dynamic (D) hypertext markup language (HTML), FLASH,Java, JavaScript, Practical Extraction Report Language (PERL), HypertextPre-Processor (PHP), pipes, Python, wireless application protocol (WAP),WebObjects, and/or the like. The information server may support securecommunications protocols such as, but not limited to, File TransferProtocol (FTP); HyperText Transfer Protocol (HTTP); Secure HypertextTransfer Protocol (HTTPS), Secure Socket Layer (SSL), messagingprotocols (e.g., America Online (AOL) Instant Messenger (AIM),Application Exchange (APEX), ICQ, Internet Relay Chat (IRC), MicrosoftNetwork (MSN) Messenger Service, Presence and Instant Messaging Protocol(PRIM), Internet Engineering Task Force's (IETF's) Session InitiationProtocol (SIP), SIP for Instant Messaging and Presence LeveragingExtensions (SIMPLE), open XML-based Extensible Messaging and PresenceProtocol (XMPP) (i.e., Jabber or Open Mobile Alliance's (OMA's) InstantMessaging and Presence Service (IMPS)), Yahoo! Instant MessengerService, and/or the like. The information server provides results in theform of Web pages to Web browsers, and allows for the manipulatedgeneration of the Web pages through interaction with other programcomponents. After a Domain Name System (DNS) resolution portion of anHTTP request is resolved to a particular information server, theinformation server resolves requests for information at specifiedlocations on the CASRM controller based on the remainder of the HTTPrequest. For example, a request such ashttp://123.124.125.126/myInformation.html might have the IP portion ofthe request “123.124.125.126” resolved by a DNS server to an informationserver at that IP address; that information server might in turn furtherparse the http request for the “/myInformation.html” portion of therequest and resolve it to a location in memory containing theinformation “myInformation.html.” Additionally, other informationserving protocols may be employed across various ports, e.g., FTPcommunications across port 21, and/or the like. An information servermay communicate to and/or with other components in a componentcollection, including itself, and/or facilities of the like. Mostfrequently, the information server communicates with the CASRM database3019, operating systems, other program components, user interfaces, Webbrowsers, and/or the like.

Access to the CASRM database may be achieved through a number ofdatabase bridge mechanisms such as through scripting languages asenumerated below (e.g., CGI) and through inter-application communicationchannels as enumerated below (e.g., CORBA, WebObjects, etc.). Any datarequests through a Web browser are parsed through the bridge mechanisminto appropriate grammars as required by the CASRM. In one embodiment,the information server would provide a Web form accessible by a Webbrowser. Entries made into supplied fields in the Web form are tagged ashaving been entered into the particular fields, and parsed as such. Theentered terms are then passed along with the field tags, which act toinstruct the parser to generate queries directed to appropriate tablesand/or fields. In one embodiment, the parser may generate queries instandard SQL by instantiating a search string with the properjoin/select commands based on the tagged text entries, wherein theresulting command is provided over the bridge mechanism to the CASRM asa query. Upon generating query results from the query, the results arepassed over the bridge mechanism, and may be parsed for formatting andgeneration of a new results Web page by the bridge mechanism. Such a newresults Web page is then provided to the information server, which maysupply it to the requesting Web browser.

Also, an information server may contain, communicate, generate, obtain,and/or provide program component, system, user, and/or datacommunications, requests, and/or responses.

User Interface

Computer interfaces in some respects are similar to automobile operationinterfaces. Automobile operation interface elements such as steeringwheels, gearshifts, and speedometers facilitate the access, operation,and display of automobile resources, and status.

Computer interaction interface elements such as check boxes, cursors,menus, scrollers, and windows (collectively and commonly referred to aswidgets) similarly facilitate the access, capabilities, operation, anddisplay of data and computer hardware and operating system resources,and status. Operation interfaces are commonly called user interfaces.Graphical user interfaces (GUIs) such as the Apple Macintosh OperatingSystem's Aqua, IBM's OS/2, Microsoft's Windows2000/2003/3.1/95/98/CE/Millenium/NT/XP/Vista/7 (i.e., Aero), Unix'sX-Windows (e.g., which may include additional Unix graphic interfacelibraries and layers such as K Desktop Environment (KDE), mythTV and GNUNetwork Object Model Environment (GNOME)), web interface libraries(e.g., ActiveX, AJAX, (D)HTML, FLASH, Java, JavaScript, etc. interfacelibraries such as, but not limited to, Dojo, jQuery(UI), MooTools,Prototype, script.aculo.us, SWFObject, Yahoo! User Interface, any ofwhich may be used and) provide a baseline and means of accessing anddisplaying information graphically to users.

A user interface component 3017 is a stored program component that isexecuted by a CPU. The user interface may be a conventional graphic userinterface as provided by, with, and/or atop operating systems and/oroperating environments such as already discussed. The user interface mayallow for the display, execution, interaction, manipulation, and/oroperation of program components and/or system facilities through textualand/or graphical facilities. The user interface provides a facilitythrough which users may affect, interact, and/or operate a computersystem. A user interface may communicate to and/or with other componentsin a component collection, including itself, and/or facilities of thelike. Most frequently, the user interface communicates with operatingsystems, other program components, and/or the like. The user interfacemay contain, communicate, generate, obtain, and/or provide programcomponent, system, user, and/or data communications, requests, and/orresponses.

Web Browser

A Web browser component 3018 is a stored program component that isexecuted by a CPU. The Web browser may be a conventional hypertextviewing application such as Microsoft Internet Explorer or NetscapeNavigator. Secure Web browsing may be supplied with 128 bit (or greater)encryption by way of HTTPS, SSL, and/or the like. Web browsers allowingfor the execution of program components through facilities such asActiveX, AJAX, (D)HTML, FLASH, Java, JavaScript, web browser plug-inAPIs (e.g., FireFox, Safari Plug-in, and/or the like APIs), and/or thelike. Web browsers and like information access tools may be integratedinto PDAs, cellular telephones, and/or other mobile devices. A Webbrowser may communicate to and/or with other components in a componentcollection, including itself, and/or facilities of the like. Mostfrequently, the Web browser communicates with information servers,operating systems, integrated program components (e.g., plug-ins),and/or the like; e.g., it may contain, communicate, generate, obtain,and/or provide program component, system, user, and/or datacommunications, requests, and/or responses. Also, in place of a Webbrowser and information server, a combined application may be developedto perform similar operations of both. The combined application wouldsimilarly affect the obtaining and the provision of information tousers, user agents, and/or the like from the CASRM enabled nodes. Thecombined application may be nugatory on systems employing standard Webbrowsers.

Mail Server

A mail server component 3021 is a stored program component that isexecuted by a CPU 3003. The mail server may be a conventional Internetmail server such as, but not limited to sendmail, Microsoft Exchange,and/or the like. The mail server may allow for the execution of programcomponents through facilities such as ASP, ActiveX, (ANSI) (Objective-)C (++), C# and/or .NET, CGI scripts, Java, JavaScript, PERL, PHP, pipes,Python, WebObjects, and/or the like. The mail server may supportcommunications protocols such as, but not limited to: Internet messageaccess protocol (IMAP), Messaging Application Programming Interface(MAPI)/Microsoft Exchange, post office protocol (POP3), simple mailtransfer protocol (SMTP), and/or the like. The mail server can route,forward, and process incoming and outgoing mail messages that have beensent, relayed and/or otherwise traversing through and/or to the CASRM.

Access to the CASRM mail may be achieved through a number of APIsoffered by the individual Web server components and/or the operatingsystem.

Also, a mail server may contain, communicate, generate, obtain, and/orprovide program component, system, user, and/or data communications,requests, information, and/or responses.

Mail Client

A mail client component 3022 is a stored program component that isexecuted by a CPU 3003. The mail client may be a conventional mailviewing application such as Apple Mail, Microsoft Entourage, MicrosoftOutlook, Microsoft Outlook Express, Mozilla, Thunderbird, and/or thelike. Mail clients may support a number of transfer protocols, such as:IMAP, Microsoft Exchange, POP3, SMTP, and/or the like. A mail client maycommunicate to and/or with other components in a component collection,including itself, and/or facilities of the like. Most frequently, themail client communicates with mail servers, operating systems, othermail clients, and/or the like; e.g., it may contain, communicate,generate, obtain, and/or provide program component, system, user, and/ordata communications, requests, information, and/or responses. Generally,the mail client provides a facility to compose and transmit electronicmail messages.

Cryptographic Server

A cryptographic server component 3020 is a stored program component thatis executed by a CPU 3003, cryptographic processor 3026, cryptographicprocessor interface 3027, cryptographic processor device 3028, and/orthe like. Cryptographic processor interfaces will allow for expeditionof encryption and/or decryption requests by the cryptographic component;however, the cryptographic component, alternatively, may run on aconventional CPU. The cryptographic component allows for the encryptionand/or decryption of provided data. The cryptographic component allowsfor both symmetric and asymmetric (e.g., Pretty Good Protection (PGP))encryption and/or decryption. The cryptographic component may employcryptographic techniques such as, but not limited to: digitalcertificates (e.g., X.509 authentication framework), digital signatures,dual signatures, enveloping, password access protection, public keymanagement, and/or the like. The cryptographic component will facilitatenumerous (encryption and/or decryption) security protocols such as, butnot limited to: checksum, Data Encryption Standard (DES), EllipticalCurve Encryption (ECC), International Data Encryption Algorithm (IDEA),Message Digest 5 (MD5, which is a one way hash operation), passwords,Rivest Cipher (RC5), Rijndael, RSA (which is an Internet encryption andauthentication system that uses an algorithm developed in 1977 by RonRivest, Adi Shamir, and Leonard Adleman), Secure Hash Algorithm (SHA),Secure Socket Layer (SSL), Secure Hypertext Transfer Protocol (HTTPS),and/or the like. Employing such encryption security protocols, the CASRMmay encrypt all incoming and/or outgoing communications and may serve asnode within a virtual private network (VPN) with a wider communicationsnetwork. The cryptographic component facilitates the process of“security authorization” whereby access to a resource is inhibited by asecurity protocol wherein the cryptographic component effects authorizedaccess to the secured resource. In addition, the cryptographic componentmay provide unique identifiers of content, e.g., employing and MD5 hashto obtain a unique signature for an digital audio file. A cryptographiccomponent may communicate to and/or with other components in a componentcollection, including itself, and/or facilities of the like. Thecryptographic component supports encryption schemes allowing for thesecure transmission of information across a communications network toenable the CASRM component to engage in secure transactions if sodesired. The cryptographic component facilitates the secure accessing ofresources on the CASRM and facilitates the access of secured resourceson remote systems; i.e., it may act as a client and/or server of securedresources. Most frequently, the cryptographic component communicateswith information servers, operating systems, other program components,and/or the like. The cryptographic component may contain, communicate,generate, obtain, and/or provide program component, system, user, and/ordata communications, requests, and/or responses.

The CASRM Database

The CASRM database component 3019 may be embodied in a database and itsstored data. The database is a stored program component, which isexecuted by the CPU; the stored program component portion configuringthe CPU to process the stored data. The database may be a conventional,fault tolerant, relational, scalable, secure database such as Oracle orSybase. Relational databases are an extension of a flat file. Relationaldatabases consist of a series of related tables. The tables areinterconnected via a key field. Use of the key field allows thecombination of the tables by indexing against the key field; i.e., thekey fields act as dimensional pivot points for combining informationfrom various tables. Relationships generally identify links maintainedbetween tables by matching primary keys. Primary keys represent fieldsthat uniquely identify the rows of a table in a relational database.More precisely, they uniquely identify rows of a table on the “one” sideof a one-to-many relationship.

Alternatively, the CASRM database may be implemented using variousstandard data-structures, such as an array, hash, (linked) list, struct,structured text file (e.g., XML), table, and/or the like. Suchdata-structures may be stored in memory and/or in (structured) files. Inanother alternative, an object-oriented database may be used, such asFrontier, ObjectStore, Poet, Zope, and/or the like. Object databases caninclude a number of object collections that are grouped and/or linkedtogether by common attributes; they may be related to other objectcollections by some common attributes. Object-oriented databases performsimilarly to relational databases with the exception that objects arenot just pieces of data but may have other types of capabilitiesencapsulated within a given object. If the CASRM database is implementedas a data-structure, the use of the CASRM database 3019 may beintegrated into another component such as the CASRM component 3035.Also, the database may be implemented as a mix of data structures,objects, and relational structures. Databases may be consolidated and/ordistributed in countless variations through standard data processingtechniques. Portions of databases, e.g., tables, may be exported and/orimported and thus decentralized and/or integrated.

In one embodiment, the database component 3019 includes several tables3019 a-i. A user account table 3019 a includes fields such as, but notlimited to: user_ID, user_name, user_password, user_fname, user_lname,user_address, user_devices, user_email, user_date_added,user_controllers, user_buildings, and/or the like. The user accounttable may support and/or track multiple user accounts on a CASRM.

A controller table 3019 b includes fields such as, but not limited to:controller_ID, controller_type, controller_make, controller_model,controller_version, controller_location, controller_settings_current,controller_settings_history, controller_child_controllers,controller_initiated, controller_last_updated, and/or the like. Thecontroller table may support and/or track multiple controllers on aCASRM.

A building table 3019 c includes fields such as, but not limited to:building_ID, building_name, building_address, building_GPS,building_floors, and/or the like. The building table may support and/ortrack buildings using controllers on a CASRM.

A floor table 3019 d includes fields such as, but not limited to: floorID, floor_name, floor_controllers, floor_rooms, floor_number, and/or thelike. The floor table may support and/or track floors using controllerson a CASRM.

A room table 3019 e includes fields such as, but not limited to:room_ID, room_type, room_name, room_controllers, room_number,room_window_facing, and/or the like. The room table may support and/ortrack rooms using controllers on a CASRM.

An applications table 3019 f includes fields such as, but not limitedto: app_ID, app_controller_type, app_duration, app_created, app_code,app version, app_supported, and/or the like. The applications table maysupport and/or track applications for controllers on a CASRM.

A data logs table 3019 g includes fields such as, but not limited to:log_ID, log_date, log_settings, log_errors, logs_status, logs usage,and/or the like. The building table may support and/or track data logsfrom controllers on a CASRM.

A weather table 3019 h includes fields such as, but not limited to:weather_ID, weather_date, weather_temperature, weather_humidity,weather_daytime, weather_nighttime, weather_storm_data, and/or the like.The weather table may support and/or track weather data on a CASRM.

A verification code table 3019 i includes fields such as, but notlimited to: verification_ID, verification_controller, verification_URL,verification_auth_code, verification_duration, verification_created,and/or the like. The verification code table may support and/or trackverification codes on a CASRM.

In one embodiment, the CASRM database may interact with other databasesystems. For example, employing a distributed database system, queriesand data access by search CASRM component may treat the combination ofthe CASRM database, an integrated data security layer database as asingle database entity.

In one embodiment, user programs may contain various user interfaceprimitives, which may serve to update the CASRM. Also, various accountsmay require custom database tables depending upon the environments andthe types of clients the CASRM may need to serve.

It should be noted that any unique fields may be designated as a keyfield throughout. In an alternative embodiment, these tables have beendecentralized into their own databases and their respective databasecontrollers (i.e., individual database controllers for each of the abovetables). Employing standard data processing techniques, one may furtherdistribute the databases over several computer systemizations and/orstorage devices. Similarly, configurations of the decentralized databasecontrollers may be varied by consolidating and/or distributing thevarious database components 3019 a-i. The CASRM may be configured tokeep track of various settings, inputs, and parameters via databasecontrollers.

The CASRM database may communicate to and/or with other components in acomponent collection, including itself, and/or facilities of the like.Most frequently, the CASRM database communicates with the CASRMcomponent, other program components, and/or the like. The database maycontain, retain, and provide information regarding other nodes and data.

The CASRMs

The CASRM component 3035 is a stored program component that is executedby a CPU. In one embodiment, the CASRM component incorporates any and/orall combinations of the aspects of the CASRM that was discussed in theprevious figures. As such, the CASRM affects accessing, obtaining andthe provision of information, services, transactions, and/or the likeacross various communications networks. The features and embodiments ofthe CASRM discussed herein increase network efficiency by reducing datatransfer requirements the use of more efficient data structures andmechanisms for their transfer and storage. As a consequence, more datamay be transferred in less time, and latencies with regard totransactions, are also reduced. In many cases, such reduction instorage, transfer time, bandwidth requirements, latencies, etc., willreduce the capacity and structural infrastructure requirements tosupport the CASRM's features and facilities, and in many cases reducethe costs, energy consumption/requirements, and extend the life ofCASRM's underlying infrastructure; this has the added benefit of makingthe CASRM more reliable. Similarly, many of the features and mechanismsare designed to be easier for users to use and access, therebybroadening the audience that may enjoy/employ and exploit the featuresets of the CASRM; such ease of use also helps to increase thereliability of the CASRM. In addition, the feature sets includeheightened security as noted via the Cryptographic components 3020,3026, 3028 and throughout, making access to the features and data morereliable and secure.

The CASRM transforms resource use, weather, and user settings inputs viaCASRM's New Controller Configuration 3041, Controller Settings Update3042, and Guest Controller Authorization Component 3043 components intoresource management schedules and controls outputs.

The CASRM component enabling access of information between nodes may bedeveloped by employing standard development tools and languages such as,but not limited to: Apache components, Assembly, ActiveX, binaryexecutables, (ANSI) (Objective-) C (++), C# and/or .NET, databaseadapters, CGI scripts, Java, JavaScript, mapping tools, procedural andobject oriented development tools, PERL, PHP, Python, shell scripts, SQLcommands, web application server extensions, web developmentenvironments and libraries (e.g., Microsoft's ActiveX; Adobe AIR, FLEX &FLASH; AJAX; (D)HTML; Dojo, Java; JavaScript; jQuery(UI); MooTools;Prototype; script.aculo.us; Simple Object Access Protocol (SOAP);SWFObject; Yahoo! User Interface; and/or the like), WebObjects, and/orthe like. In one embodiment, the CASRM server employs a cryptographicserver to encrypt and decrypt communications. The CASRM component maycommunicate to and/or with other components in a component collection,including itself, and/or facilities of the like. Most frequently, theCASRM component communicates with the CASRM database, operating systems,other program components, and/or the like. The CASRM may contain,communicate, generate, obtain, and/or provide program component, system,user, and/or data communications, requests, and/or responses.

Distributed CASRMs

The structure and/or operation of any of the CASRM node controllercomponents may be combined, consolidated, and/or distributed in anynumber of ways to facilitate development and/or deployment. Similarly,the component collection may be combined in any number of ways tofacilitate deployment and/or development. To accomplish this, one mayintegrate the components into a common code base or in a facility thatcan dynamically load the components on demand in an integrated fashion.

The component collection may be consolidated and/or distributed incountless variations through standard data processing and/or developmenttechniques. Multiple instances of any one of the program components inthe program component collection may be instantiated on a single node,and/or across numerous nodes to improve performance throughload-balancing and/or data-processing techniques. Furthermore, singleinstances may also be distributed across multiple controllers and/orstorage devices; e.g., databases. All program component instances andcontrollers working in concert may do so through standard dataprocessing communication techniques.

The configuration of the CASRM controller will depend on the context ofsystem deployment. Factors such as, but not limited to, the budget,capacity, location, and/or use of the underlying hardware resources mayaffect deployment requirements and configuration. Regardless of if theconfiguration results in more consolidated and/or integrated programcomponents, results in a more distributed series of program components,and/or results in some combination between a consolidated anddistributed configuration, data may be communicated, obtained, and/orprovided. Instances of components consolidated into a common code basefrom the program component collection may communicate, obtain, and/orprovide data. This may be accomplished through intra-application dataprocessing communication techniques such as, but not limited to: datareferencing (e.g., pointers), internal messaging, object instancevariable communication, shared memory space, variable passing, and/orthe like.

If component collection components are discrete, separate, and/orexternal to one another, then communicating, obtaining, and/or providingdata with and/or to other component components may be accomplishedthrough inter-application data processing communication techniques suchas, but not limited to: Application Program Interfaces (API) informationpassage; (distributed) Component Object Model ((D)COM), (Distributed)Object Linking and Embedding ((D)OLE), and/or the like), Common ObjectRequest Broker Architecture (CORBA), Jini local and remote applicationprogram interfaces, JavaScript Object Notation (JSON), Remote MethodInvocation (RMI), SOAP, process pipes, shared files, and/or the like.Messages sent between discrete component components forinter-application communication or within memory spaces of a singularcomponent for intra-application communication may be facilitated throughthe creation and parsing of a grammar. A grammar may be developed byusing development tools such as lex, yacc, XML, and/or the like, whichallow for grammar generation and parsing capabilities, which in turn mayform the basis of communication messages within and between components.

For example, a grammar may be arranged to recognize the tokens of anHTTP post command, e.g.:

-   -   w3c -post http:// . . . Value1

where Value1 is discerned as being a parameter because “http://” is partof the grammar syntax, and what follows is considered part of the postvalue. Similarly, with such a grammar, a variable “Value1” may beinserted into an “http://” post command and then sent. The grammarsyntax itself may be presented as structured data that is interpretedand/or otherwise used to generate the parsing mechanism (e.g., a syntaxdescription text file as processed by lex, yacc, etc.). Also, once theparsing mechanism is generated and/or instantiated, it itself mayprocess and/or parse structured data such as, but not limited to:character (e.g., tab) delineated text, HTML, structured text streams,XML, and/or the like structured data. In another embodiment,inter-application data processing protocols themselves may haveintegrated and/or readily available parsers (e.g., JSON, SOAP, and/orlike parsers) that may be employed to parse (e.g., communications) data.Further, the parsing grammar may be used beyond message parsing, but mayalso be used to parse: databases, data collections, data stores,structured data, and/or the like. Again, the desired configuration willdepend upon the context, environment, and requirements of systemdeployment.

For example, in some implementations, the CASRM controller may beexecuting a PHP script implementing a Secure Sockets Layer (“SSL”)socket server via the information server, which listens to incomingcommunications on a server port to which a client may send data, e.g.,data encoded in JSON format. Upon identifying an incoming communication,the PHP script may read the incoming message from the client device,parse the received JSON-encoded text data to extract information fromthe JSON-encoded text data into PHP script variables, and store the data(e.g., client identifying information, etc.) and/or extractedinformation in a relational database accessible using the StructuredQuery Language (“SQL”). An exemplary listing, written substantially inthe form of PHP/SQL commands, to accept JSON-encoded input data from aclient device via a SSL connection, parse the data to extract variables,and store the data to a database, is provided below:

<?PHP header(‘Content-Type: text/plaid’); // set ip address and port tolisten to for incoming data $address = ‘192.168.0.100’; Sport = 255; //create a server-side SSL socket, listen for/accept incomingcommunication $sock = socket_create(AF_INET, SOCK_STREAM, 0);socket_bind($sock, $address, $port) or die(‘Could not bind to address’);socket_listen($sock); $client = socket_accept($sock); // read input datafrom client device in 1024 byte blocks until end of message do {      $input = “”;       $input = socket read($client, 1024);      $data .= $input; } while($input != “”); // parse data to extractvariables $obj = json_decode($data, true); // store input data in adatabase mysql_connect(“201.408.185.132”,$DBserver,$password); // accessdatabase server mysql_select(“CLIENT_DB.SQL”); // select database toappend mysql_quely(“INSERT INTO UserTable (transmission) VALUES($data)”); // add data to UserTable table in a CLIENT databasemysql_close(“CLIENT_DB.SQL” ); // close connection to database ?>

Also, the following resources may be used to provide example embodimentsregarding SOAP parser implementation:

http://www.xav.com/perl/site/lib/SOAP/Parser.html

http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=/com.ibm.IBMDI.doc/referenceguide295.htm

and other parser implementations:

http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=/com.ibm.IBMDI.doc/referenceguide259.htmall of which are hereby expressly incorporated by reference.

ADDITIONAL EMBODIMENTS

A1. An apparatus for managing resources, comprising a processor; and amemory disposed in communication with the processor and storingprocessor-executable instructions to

receive a request from an at least one electronic resource monitoringdevice to authenticate a settings update for the least one resourcemonitoring device; verify the relationship between a user and the atleast one resource monitoring device and a network on which the at leastone resource monitoring device resides; send a confirmation to the atleast one resource monitoring device indicating that it can update itssettings; and store the information in the settings update in adatabase.

A2. The apparatus of embodiment A1 further comprisingprocessor-executable instructions to generate a historical record of thesettings updates submitted by the at least one resource monitoringdevice; and provide the historical record to the at least one resourcemonitoring device.

A3. The embodiment according to A1 or A2, wherein the at least oneelectronic resource monitoring device forwards its settings update to alocal resource monitoring device.

A4. The embodiment according to any of A1-A3, wherein network is avirtual network and wherein the request to authenticate includescredentials for logging into the virtual network.

A5. The embodiment(s) according to any of A1-A4, further comprisingprocessor-executable instructions to receive from a user a request toauthenticate an update to alter a resource monitoring device's virtualnetwork address from a first virtual network to a second virtualnetwork; authenticate the user via verifying access rights on the firstvirtual network, the second virtual network, and the resource monitoringdevice; move the resource monitoring device from the first virtualnetwork to the second virtual network via updating the virtual networkaddress of the resource monitoring device to reflect that it is on thesecond virtual network; and send a notification to the user indicatingthe device has been moved to the second virtual network.

The embodiments according to any of A1-A5, wherein the request toauthenticate is sent to a virtual network layer emulating physicalnetwork infrastructure. The virtual network layer may emulate a BACnetnetwork layer, and may further comprise secure virtual web sockets.

B1. A processor-implemented method for managing resources, comprisingreceiving a request from at least one electronic resource monitoringdevice to authenticate a settings update for the least one resourcemonitoring device; verifying the relationship between a user and the atleast one resource monitoring device and a network on which the at leastone monitoring device resides; sending a confirmation to the at leastone resource monitoring device indicating that it can update itssettings; and storing the information in the settings update in adatabase. The method further comprising generating a historical recordof the settings updates submitted by the at least one resourcemonitoring device; and providing the historical record to the at leastone resource monitoring device.

B2. The embodiment of B1, wherein the at least one electronic resourcemonitoring device forwards its settings update to a local resourcemonitoring device. The network is a virtual network and wherein therequest to authenticate includes credentials for logging into thevirtual network.

B3. The method of embodiment B1 or B2, further comprising receiving froma user a request to authenticate an update to alter a resourcemonitoring device's virtual network address from a first virtual networkto a second virtual network; authenticating the user via verifyingaccess rights on the first virtual network, the second virtual network,and the resource monitoring device; moving the resource monitoringdevice from the first virtual network to the second virtual network viaupdating the virtual network address of the resource monitoring deviceto reflect that it is on the second virtual network; and sending anotification to the user indicating the device has been moved to thesecond virtual network.

B4. The method of any of embodiments B1-B3, wherein the request toauthenticate is sent to a virtual network layer emulating physicalnetwork infrastructure. The virtual network layer may emulate a BACnetnetwork layer, and may further comprise secure virtual web sockets.

C1. A system for managing resources, comprising means for receiving arequest from at least one electronic resource monitoring device toauthenticate a settings update for the least one resource monitoringdevice; means for verifying the relationship between a user and the atleast one resource monitoring device and a network on which the at leastone resource monitoring device resides; means for sending a confirmationto the at least one resource monitoring device indicating that it canupdate its settings; and means for storing the information in thesettings update in a database.

C2. The system of embodiment C1, further comprising means for generatinga historical record of the settings updates submitted by the at leastone resource monitoring device; and means for providing the historicalrecord to the at least one resource monitoring device.

C3. The system of C1 or C2, wherein the at least one electronic resourcemonitoring device forwards its settings update to a local resourcemonitoring device. C4. The system of any of C1-C3, wherein the networkis a virtual network and wherein the request to authenticate comprisescredentials for logging into the virtual network.

C5. The system of any of embodiments C1-C4, further comprising means forreceiving from a user a request to authenticate an update to alter aresource monitoring device's virtual network address from a firstvirtual network to a second virtual network; means for authenticatingthe user via verifying access rights on the first virtual network, thesecond virtual network, and the resource monitoring device; means formoving the resource monitoring device from the first virtual network tothe second virtual network via updating the virtual network address ofthe resource monitoring device to reflect that it is on the secondvirtual network; and means for sending a notification to the userindicating the device has been moved to the second virtual network.

C6. The system according to any of embodiments C1-C5, wherein therequest to authenticate is sent to a virtual network layer emulatingphysical network infrastructure. The virtual network layer may emulate aBACnet network layer, and may further comprise secure virtual websockets.

D1. A processor-readable non-transitory computer medium for managingresources, storing processor instuctions to receive a request from atleast one electronic resource monitoring device to authenticate asettings update for the least one resource monitoring device; verify therelationship between a user and the at least one resource monitoringdevice and a network on which the at least one resource monitoringdevice resides; send a confirmation to the at least one resourcemonitoring device indicating that it can update its settings; and storethe information in the settings update in a database.

D2. The medium of embodiment D1, further comprising processor-executableinstructions to generate a historical record of the settings updatessubmitted by the at least one resource monitoring device; and providethe historical record to the at least one resource monitoring device.

D3. The medium of embodiment D1 or D2, wherein the at least oneelectronic resource monitoring device forwards its settings update to alocal resource monitoring device. The network is a virtual network andwherein the request to authenticate comprises credentials for logginginto the virtual network.

D4. The medium of any of embodiments D1-D3, further comprisingprocessor-executable instructions to receive from a user a request toauthenticate an update to alter a resource monitoring device's virtualnetwork address from a first virtual network to a second virtualnetwork; authenticate the user via verifying access rights on the firstvirtual network, the second virtual network, and the resource monitoringdevice; move the resource monitoring device from the first virtualnetwork to the second virtual network via updating the virtual networkaddress of the resource monitoring device to reflect that it is on thesecond virtual network; and send a notification to the user indicatingthe device has been moved to the second virtual network.

D5. The medium of any of embodiments D1-D4, wherein the request toauthenticate is sent to a virtual network layer emulating physicalnetwork infrastructure. D6. The medium according to any of embodimentsD1-D5, wherein the virtual network layer may emulate a BACnet networklayer, and may further comprise secure virtual web sockets.

Additional embodiments are described below, which are understood to beimplementable as methods, apparatuses, processes, systems, and so forth.Methods and processes according to the disclosure can be stored ontangible, computer readable media. The following are exemplarynon-limiting embodiments:

E1. A building automation management device, comprising a processor anda memory disposed in communication with the processor and storingprocessor-executable instructions to: receive at a virtual cloud networkcontroller a data packet from a source building resource control device;access a virtual routing table corresponding to a local virtual networkassociated with a control entity; determine a destination buildingresource control device based on the virtual routing table and at leastone destination address in the data packet; and send the data packet tothe destination building resource control device. In some embodiments,the device enables integration of a sub devices and/or components thathave different communication protocols, for example, a source buildingresource control device using a first communication protocol, and adestination building resource control device uses a second communicationprotocol different from the first communication protocol.

E2. The building automation management device of embodiment E1, furthercomprising instructions to: authenticate the data packet from the sourcebuilding resource control device.

E3. The building automation management device of E1 or E2, wherein thedata packet includes destination building resource control devicesettings.

E4. The building automation management device of embodiment E1, E2, orE3, wherein the destination building resource control device is asecondary building resource device.

E5. The building automation management device of embodiment E4, whereinthe secondary building resource device is one or more of an energymanagement device, an energy monitoring device, and/or a lighting deviceand wherein the settings altered are one of lighting settings and energysettings for devices connected to the secondary building resourcedevice.

E6. The building automation management device of embodiment E4 or E5,wherein the settings altered are one or more of lighting settings andenergy settings for one or more devices connected to the secondarybuilding resource device.

E7. The building automation management device of embodiment E4, E5 orE6, wherein the secondary building resource device and/or a deviceconnected thereto is a Heating, Ventilation, and Air Conditioning (HVAC)device, and wherein the settings altered are one of heating,ventilation, or air conditioning settings.

E8. The building automation management device of any of embodimentsE1-E7, wherein the control entity is a user account authorized tooperate the source building resource control device.

E9. The building automation management device of any of embodiments E2to E8, wherein authenticating the data packet includes authenticatinguser credentials within the data packet.

E10. The building automation management device of any embodiments E1 toE9, wherein the local virtual network includes virtual network nodes,each of the virtual network nodes corresponding to a building resourcecontrol device operated by the control entity.

E11. The building automation management device of embodiment E10,wherein representations of the virtual network nodes are instantiated inthe virtual cloud network controller.

E12. A building automation management device, comprising: a processor;and a memory disposed in communication with the processor and storingprocessor-executable instructions to: receive a registration requestfrom a building resource control device; generate a first virtual localnetwork; generate a virtual network node with a virtual local address,the virtual local address corresponding to a first location of thevirtual network node within the first virtual local network; map thevirtual network node to the building resource control device; storefirst virtual local network and virtual network node information in adatabase; receive a location modification request for a virtual networknode corresponding to the building resource control device, the locationmodification request including instructions to modify the virtual localaddress of the virtual network node to correspond to a location on asecond virtual network; move the building resource control device fromthe first virtual network to the second virtual network via changing thevirtual network address of the virtual network node corresponding to thebuilding resource control device to a second virtual network addresslocated on the second virtual local network; and send a notificationindicating the building resource control device has been moved to thesecond virtual network.

E13. The building automation management device of embodiment E12,further comprising instructions to: receive a registration request for asecondary building resource device; authenticate the registrationrequest; generate a new virtual network node with a new virtual localaddress, the new virtual local address corresponding to a location ofthe new virtual network node within the first virtual local network; mapthe new virtual network node to the secondary building resource device;link the new virtual network node to the virtual network nodecorresponding to the building resource management device within thefirst virtual local network; store new virtual network node informationin the database; and store permissions in the database to allow thesecondary building resource device to be issued instructions from thebuilding resource control device, the instructions issued from thebuilding resource control device including instructions to alter thesettings on the secondary building resource device.

E14. The building automation management device of embodiment E12 or E13,wherein the secondary building resource device is an energy managementdevice, and wherein the settings altered are at least one of lightingsettings and/or energy settings for one or more devices connected to thesecondary building resource device.

E15. The building automation management device of embodiment E12, E13and/or E14, wherein the secondary building resource device and/or adevice connected thereto is a Heating, Ventilation, and Air Conditioning(HVAC) device, and wherein the settings altered are one of heating,ventilation, or air conditioning settings.

E16. The building automation management device of any of embodimentE12-E15, wherein the secondary building resource device comprises aplurality of building resource devices, wherein instructions issued fromthe building resource control device are implemented across theplurality of building resource devices.

E17. The building automation management device of any of embodimentE12-E16, wherein the secondary building resource device is a utilitydevice in control of a utility resource, and wherein the settingsaltered are utility resource consumption settings.

E18. The building automation management device of embodiment E17,wherein the at least one utility resource is one of electric, gas,water, or oil.

E19. The building automation management device of any of embodiments E12to E18, wherein the secondary building resource device is a secondarybuilding resource control device, and wherein the settings alteredinclude settings to control at least one further building resourcedevice.

E20. The building automation management device of any of embodiments E12to E19, wherein the building resource control device is associated witha building in a first geographic location and the secondary buildingresource device is associated with a building in a second geographiclocation separate from the first geographic location.

E21. The building automation management device of any of embodiments E12to E20, wherein the registration request from a building resourcecontrol device is authenticated prior to generating the first virtuallocal network.

E22. A building automation management device, comprising: a processor;and a memory disposed in communication with the processor and storingprocessor-executable instructions to: receive a registration requestfrom an electronic building resource control device operated by a user;add via the cloud network controller a virtual local network node to avirtual local network associated with the user, the virtual localnetwork node corresponding to the electronic building resourcemanagement device; generate a virtual local Internet Protocol (IP)address for the virtual local network node; and provide the virtuallocal IP address to the electronic building resource control device.

E23. The building automation management device of embodiment E22,further comprising instructions to: authenticate the registrationrequest from the electronic building resource control device.

E24. The building automation management device of embodiment E22,wherein the electronic building resource control device is a primaryelectronic building resource control device, wherein the primaryelectronic building resource control device is added to a new localvirtual network associated with the user and the primary electronicbuilding resource control device when the primary electronic buildingresource control device sends the registration request.

E25. The building automation management device of any of embodiments E22to E24, wherein the electronic building resource control device is asecondary electronic building resource control device, wherein thesecondary electronic building resource control device is added to anexisting local virtual network associated with the user and the primaryelectronic building resource control device when the secondaryelectronic building resource control device sends the registrationrequest.

E26. The building automation management device of any of embodiments E22to E25, wherein the virtual local network is a virtual networkinstantiated on the cloud network controller.

E27. The building automation management device of any of embodiments E22to E26, wherein adding the virtual local network node further comprises:updating a virtual local network topology map to include the virtuallocal network node as a virtual local network edge node in the virtuallocal network topology map.

E28. A building automation management hospitality device comprising: aprocessor; and a memory disposed in communication with the processor andstoring processor-executable instructions to: receive an indication thata guest user is using a physical space associated with an electronicbuilding resource control device; generate a verification code for theelectronic building resource control device; provide the verificationcode to the electronic building resource control device for display;receive an authentication request based on the displayed verificationcode to authenticate the guest user; authenticate the guest user basedon data in the authentication request; establish guest authorizationaccess parameters based on the authentication of the authenticationrequest, wherein the guest authorization parameters include a guestauthorization expiration time; authorize guest user access to theelectronic building resource control device according to the establishedguest authorization access parameters; and deauthorize guest user accessto the electronic building resource control device according to theestablished guest authorization access parameters.

E29. The building automation management hospitality device of embodimentE28, wherein the verification code is one of a QR code or a bar code. Insome embodiments, the verification code can be transmitted by a user'smobile device, either locally (e.g., via Bluetooth or the like) and/ormay be sent over wireless networks such as wireless data and/or cellularnetworks).

E30. The building automation management device of embodiment E29,wherein the verification code includes one of an authentication code ora URL including an embedded authentication code.

E31. The building automation management device of any of embodiments E28to E30, wherein the guest user access is deauthorized when the guestauthorization expiration time has elapsed.

E32. The building automation management device of any of embodiments E28to E31, wherein the device is part of a virtual network. In someimplementations, embodiment E28 may be implemented on one or more of theembodiments of E1 to E27.

E33. The building automation management device of any of embodiments E1to E32, wherein the source building resource control device uses a firstcommunication protocol, and wherein the destination building resourcecontrol device uses a second communication protocol different from thefirst communication protocol.

E34. A building automation management device according to any one of E1to E33, in combination with one of more of the remaining of E1 to E33.

E35. A method implementing the instructions of any of embodiments E1 toE34.

E36. A computer readable, non-transitory tangible medium forimplementing the method of embodiment E35.

In order to address various issues and advance the art, the entirety ofthis application for CLOUD-AUTHENTICATED SITE RESOURCE MANAGEMENTDEVICES, APPARATUSES, METHODS AND SYSTEMS (including the Cover Page,Title, Headings, Field, Background, Summary, Brief Description of theDrawings, Detailed Description, Claims, Abstract, Figures, Appendices,and otherwise) shows, by way of illustration, various embodiments inwhich the claimed innovations may be practiced. The advantages andfeatures of the application are of a representative sample ofembodiments only, and are not exhaustive and/or exclusive. They arepresented only to assist in understanding and teach the claimedprinciples. It should be understood that they are not representative ofall claimed innovations. As such, certain aspects of the disclosure havenot been discussed herein. That alternate embodiments may not have beenpresented for a specific portion of the innovations or that furtherundescribed alternate embodiments may be available for a portion is notto be considered a disclaimer of those alternate embodiments. It will beappreciated that many of those undescribed embodiments incorporate thesame principles of the innovations and others are equivalent. Thus, itis to be understood that other embodiments may be utilized andfunctional, logical, operational, organizational, structural and/ortopological modifications may be made without departing from the scopeand/or spirit of the disclosure. As such, all examples and/orembodiments are deemed to be non-limiting throughout this disclosure.Also, no inference should be drawn regarding those embodiments discussedherein relative to those not discussed herein other than it is as suchfor purposes of reducing space and repetition. For instance, it is to beunderstood that the logical and/or topological structure of anycombination of any program components (a component collection), othercomponents and/or any present feature sets as described in the figuresand/or throughout are not limited to a fixed operating order and/orarrangement, but rather, any disclosed order is exemplary and allequivalents, regardless of order, are contemplated by the disclosure.Furthermore, it is to be understood that such features are not limitedto serial execution, but rather, any number of threads, processes,services, servers, and/or the like that may execute asynchronously,concurrently, in parallel, simultaneously, synchronously, and/or thelike are contemplated by the disclosure. As such, some of these featuresmay be mutually contradictory, in that they cannot be simultaneouslypresent in a single embodiment. Similarly, some features are applicableto one aspect of the innovations, and inapplicable to others. Inaddition, the disclosure includes other innovations not presentlyclaimed. Applicant reserves all rights in those presently unclaimedinnovations including the right to claim such innovations, fileadditional applications, continuations, continuations in part,divisions, and/or the like thereof. As such, it should be understoodthat advantages, embodiments, examples, functional, features, logical,operational, organizational, structural, topological, and/or otheraspects of the disclosure are not to be considered limitations on thedisclosure as defined by the claims or limitations on equivalents to theclaims. It is to be understood that, depending on the particular needsand/or characteristics of a CASRM individual and/or enterprise user,database configuration and/or relational model, data type, datatransmission and/or network framework, syntax structure, and/or thelike, various embodiments of the CASRM, may be implemented that enable agreat deal of flexibility and customization. While various embodimentsand discussions of the CASRM have included controllers for resourcemanagement, it is to be understood that the embodiments described hereinmay be readily configured and/or customized for a wide variety of otherapplications and/or implementations.

What is claimed is:
 1. A building automation management device,comprising: a processor; and a memory disposed in communication with theprocessor and storing processor-executable instructions to: receive at avirtual cloud network controller a data packet from a source buildingresource control device; access a virtual routing table corresponding toa local virtual network associated with a control entity; determine adestination building resource control device based on the virtualrouting table and at least one destination address in the data packet;and send the data packet to the destination building resource controldevice.
 2. The building automation management device of claim 1, furthercomprising instructions to: authenticate the data packet from the sourcebuilding resource control device.
 3. The building automation managementdevice of claim 1, wherein the data packet includes destination buildingresource control device settings.
 4. The building automation managementdevice of claim 1, wherein the destination building resource controldevice is a secondary building resource device.
 5. The buildingautomation management device of claim 4, wherein the secondary buildingresource device is one or more of an energy management device, an energymonitoring device, and/or a lighting device and wherein the settingsaltered are one of lighting settings and energy settings for devicesconnected to the secondary building resource device.
 6. The buildingautomation management device of claim 4, wherein the settings alteredare one or more of lighting settings and energy settings for one or moredevices connected to the secondary building resource device.
 7. Thebuilding automation management device of claim 4, wherein the secondarybuilding resource device and/or a device connected thereto is a Heating,Ventilation, and Air Conditioning (HVAC) device, and wherein thesettings altered are one of heating, ventilation, or air conditioningsettings.
 8. The building automation management device of claim 1,wherein the control entity is a user account authorized to operate thesource building resource control device.
 9. The building automationmanagement device of claim 2, wherein authenticating the data packetincludes authenticating user credentials within the data packet.
 10. Thebuilding automation management device of claim 1, wherein the localvirtual network includes virtual network nodes, each of the virtualnetwork nodes corresponding to a building resource control deviceoperated by the control entity.
 11. The building automation managementdevice of claim 10, wherein representations of the virtual network nodesare instantiated in the virtual cloud network controller.
 12. A buildingautomation management device, comprising: a processor; and a memorydisposed in communication with the processor and storingprocessor-executable instructions to: receive a registration requestfrom a building resource control device; generate a first virtual localnetwork; generate a virtual network node with a virtual local address,the virtual local address corresponding to a first location of thevirtual network node within the first virtual local network; map thevirtual network node to the building resource control device; storefirst virtual local network and virtual network node information in adatabase; receive a location modification request for a virtual networknode corresponding to the building resource control device, the locationmodification request including instructions to modify the virtual localaddress of the virtual network node to correspond to a location on asecond virtual local network; move the building resource control devicefrom the first virtual local network to the second virtual local networkvia changing the virtual network address of the virtual network nodecorresponding to the building resource control device to a secondvirtual network address located on the second virtual local network; andsend a notification indicating the building resource control device hasbeen moved to the second virtual network.
 13. The building automationmanagement device of claim 12, further comprising instructions to:receive a registration request for a secondary building resource device;authenticate the registration request; generate a new virtual networknode with a new virtual local address, the new virtual local addresscorresponding to a location of the new virtual network node within thesecond virtual local network; map the new virtual network node to thesecondary building resource device; link the new virtual network node tothe virtual network node corresponding to the building resourcemanagement device within the second virtual local network; store newvirtual network node information in the database; and store permissionsin the database to allow the secondary building resource device to beissued instructions from the building resource control device, theinstructions issued from the building resource control device includinginstructions to alter the settings on the secondary building resourcedevice.
 14. The building automation management device of claim 13,wherein the secondary building resource device is an energy managementdevice, and wherein the settings altered are at least one of lightingsettings and/or energy settings for one or more devices connected to thesecondary building resource device.
 15. The building automationmanagement device of claim 13, wherein the secondary building resourcedevice and/or a device connected thereto is a Heating, Ventilation, andAir Conditioning (HVAC) device, and wherein the settings altered are oneof heating, ventilation, or air conditioning settings.
 16. The buildingautomation management device of claim 13, wherein the secondary buildingresource device comprises a plurality of building resource devices,wherein instructions issued from the building resource control deviceare implemented across the plurality of building resource devices. 17.The building automation management device of claim 13, wherein thesecondary building resource device is a utility device in control of autility resource, and wherein the settings altered are utility resourceconsumption settings.
 18. The building automation management device ofclaim 17, wherein the at least one utility resource is one of electric,gas, water, or oil.
 19. The building automation management device ofclaim 13, wherein the secondary building resource device is a secondarybuilding resource control device, and wherein the settings alteredinclude settings to control at least one further building resourcedevice.
 20. The building automation management device of claim 13,wherein the building resource control device is associated with abuilding in a first geographic location and the secondary buildingresource device is associated with a building in a second geographiclocation separate from the first geographic location.
 21. The buildingautomation management device of claim 12, wherein the registrationrequest from a building resource control device is authenticated priorto generating the first virtual local network.
 22. A building automationmanagement device comprising: a processor; and a memory disposed incommunication with the processor and storing processor-executableinstructions to: receive an indication that a guest user is using aphysical space associated with an electronic building resource controldevice; generate a verification code for the electronic buildingresource control device; provide the verification code to the electronicbuilding resource control device for display; receive an authenticationrequest based on the displayed verification code to authenticate theguest user; authenticate the guest user based on data in theauthentication request; establish guest authorization access parametersbased on the authentication of the authentication request, wherein theguest authorization parameters include a guest authorization expirationtime; authorize guest user access to the electronic building resourcecontrol device according to the established guest authorization accessparameters; and deauthorize guest user access to the electronic buildingresource control device according to the established guest authorizationaccess parameters.
 23. The building automation management device ofclaim 22, wherein the verification code is one of a QR code or a barcode.
 24. The building automation management device of claim 23, whereinthe verification code includes one of an authentication code or a URLincluding an embedded authentication code.
 25. The building automationmanagement device of claim 22, wherein the guest user access isdeauthorized when the guest authorization expiration time has elapsed.26. The building automation management device of claim 22, wherein theelectronic building resource control device is part of a virtualnetwork.
 27. The building automation management device of claim 1,wherein the source building resource control device uses a firstcommunication protocol, and wherein the destination building resourcecontrol device uses a second communication protocol different from thefirst communication protocol.